2017-06-05 7 views
0

私は、ユーザーがこのようなをリンクするためにクリックしたときにセッションとしてbusiness_modelデータを取得する必要があります。Rails |セッション&検索のparams

http://localhost:3000/tr/booking_requests/new?business_model=Sleep 

私もユーザー名を検索できる検索ボタンがあります。検索後、URLは次のようになります。

http://localhost:3000/tr/booking_requests/new?utf8=%E2%9C%93&search=Bill 

したがって、business_modelが消えます。通常、私はこのパラメータをとりセッションに割り当てます。

session[:business_model] = params[:business_model] 

ボタンをクリックすると、新しいアクションが開始され、セッションはnilになります。

どうすればこの問題を解決できますか?

EDIT:

ユーザーがリンクするクリックすると、それはnewアクションになり、セッションが保存されています。

def new 
    @users = User.search(params[:search]).order('id DESC').paginate(:page => params[:page], :per_page => 15) 
    @booking = BookingRequest.new 
    session[:business_model] = params[:business_model] 
    end 

しかし、ボタンをクリックして検索します。リクエストはbusiness_modelのparamsせずに再newアクションになります。だからそれは無限になります。どうすればそれを保管できますか?

答えて

2

あなたが何か他のもののためにnewコントローラのアクションを使用するべきではありません。 1アクション== 1リクエスト。あなたがnewフォームをロードしても同じアクションで検索を実行するために、両方しようとしているようです。

一つのアプローチは、session[:business_model]変数を設定しないsearch作用を有することであろう。このアクションは、あなたがそれを必要とする場合、検索結果が関連するためにセッションから読み込まれ、その後newフォームをレンダリングすることができます。

また、ここでセッションが適切なアプローチではない可能性があり、実際にはbusiness_modelを隠しフォームフィールドに残しておいて、毎回再送信されるようにする必要があります。