Railsコントローラのパラメータを永続化(保存)する方法はありますか?それはすべてのアクションに渡され、すべてのビューとすべてのリンクに渡されます。Railsコントローラの永続パラメータ
例状況: 私はコントローラを持つエンティティAを持っています。また、私は非常に頻繁に実体を「親」にアクセスする必要があるA.に依存している別のエンティティBを持っているので、私はなぜに入れない
http://some_url/b_controller/b_action?a_entity=xyz
Railsコントローラのパラメータを永続化(保存)する方法はありますか?それはすべてのアクションに渡され、すべてのビューとすべてのリンクに渡されます。Railsコントローラの永続パラメータ
例状況: 私はコントローラを持つエンティティAを持っています。また、私は非常に頻繁に実体を「親」にアクセスする必要があるA.に依存している別のエンティティBを持っているので、私はなぜに入れない
http://some_url/b_controller/b_action?a_entity=xyz
あなたはbefore_filter
とdefault_url_options
の組み合わせを使用して、あなたのコントローラからすべてを行うことができる必要があります:
class MyController < ApplicationController
before_filter :set_a_entity
def set_a_entity
@a_entity = params['a_entity']
# or @a_entity = Entity.find(params['a_entity'])
end
# Rails 3
def url_options
{:a_entity => @a_entity}.merge(super)
end
# Rails 2
def default_url_options
{:a_entity => @entity}
end
end
これで問題が解決しません@a_entity
の初期値を設定することができますが、これはどこからでも(ビュー、コントローラなど)行うことができます。
このパラメータを複数のコントローラに渡す場合は、MyController < ApplicationController
をApplicationController < ActionController::Base
に置き換えることもできます。
これが役に立ちます。
として、まだそれをしたいのですがセッションパラメータ?
session["a_entity"] = "xyz"
このようにして、他のすべてのコントローラでクリアするか、有効期限が切れるまでアクセスできます。ここ
詳細:
http://api.rubyonrails.org/classes/ActionController/Base.html
私は自分のアプリをRESTfulにしたいと思っています。また、異なるセッションで異なる結果につながる可能性のある格納されたURLのため、セッションが少し難解だとわかります。 –
私たちに例を示すことができますか?あなたのアプリがいくつかの一般的なアイデアの仕組みを想像するのはちょっと難しいです – corroded
私はあなたのソリューションを永遠にすべてのコントローラに永続させる必要はないので、私はあなたのソリューションを使用しませんでした。ありがとうございました。 –
このソリューションは、特定の単一コントローラ内でも機能します。どうもありがとうございました。 –
@ F.Filippiがヘッドアップに感謝して、私は自分の答えを修正しました。 –