asp.net mvc には、TempData
一時データを保持するために使用されるメソッドがあります。シナトラでそれに似たものはありますか?
更新: TempDataになりました。
asp.net mvc には、TempData
一時データを保持するために使用されるメソッドがあります。シナトラでそれに似たものはありますか?
更新: TempDataになりました。
ViewBag、ViewData、およびTempDataの状態の違いに関するこの記事:
3つのオブジェクトはすべて、ビューとコントローラーの両方のプロパティとして使用できます。
と
ViewDataは、データを配置するディクショナリオブジェクトであり、ビューで使用できるようになります。ViewDataはViewDataDictionaryクラスの派生物であるため、使い慣れた「キー/値」構文でアクセスできます。
と
ViewBagオブジェクトは、ViewBagの動的プロパティを作成できるようにするViewDataオブジェクトのラッパーです。
SinatraはMVCモデルを使用せず、Pageコントローラーモデルを使用します。まず、これは、.Netで必要な足場の多くがSinatraでは意味をなさないことを意味します。また、C#(またはその他)ではなくRubyを使用しているため、必要なボイラープレートの多くを見逃しています。
最後に、MVCからPageコントローラーへの話では、「コントローラー」は基本的にルートです。それで:
get "/" do
# stuff…
haml :index
end
コントローラーです。ルートとビューの両方で使用できるディクショナリオブジェクト(つまり、ある種のハッシュ)を探している場合は、ドキュメントによると、リクエストスコープに含まれています。リクエストスコープにいるときは、次の両方を利用できます。
settings
オブジェクトを含む)したがって、これは機能します:
get "/" do
@viewbag = {a: 1}
haml :index
end
%p= @viewbag[:a]
%p
This will display 1
またはこれ:
helpers do
def viewbag
@viewbag ||= {}
end
end
get "/" do
viewbag.store :a, 1
haml :index
end
%p= viewbag[:a]
%p
This will display 1
またはこれ:
get "/" do
viewbag = {:a => 1}
haml :index, :locals => {viewbag: viewbag}
end
%p= viewbag[:a]
%p
This will display 1
(上記の異なる構文とハッシュオブジェクトの使用に混乱しないでください)
最後に、ViewBagは動的です。言語全体がはるかに動的であるため、Rubyハッシュもそうです。
しかし、あなたは目標ではなく実装を述べているので、何か他のものを探して質問したような気がします。より良い答えを得たい場合は、それをどのように行うべきかだけでなく、何を達成したいのか、何を試したのかを人々に伝えてください。