2017-04-25 17 views
0

のform_forレールにデフォルトのparamsを渡す:は、私のような単純な形式持っ

= form_tag history_path(params), :method => :get do 
    = radio_button_tag :history_id, @history.id, true 
    History 
    %br 

    = submit_tag "Get History", class: "btn generate" 

を、のparamsは、私は私のようにアクションを参照してくださいフォームを検査した場合でも{visit_id: 1, company_id: 32}

のようないくつかの追加情報があります。

<form action="/history?visit_id=1&company_id=32" accept-charset="UTF-8" method="get"> 

しかし、提出をクリックすると、のparamsが渡されることはありません、私だけGE (サーバログに)渡され、次ののparams T:

Parameters: {"utf8"=>"✓", "history_id"=>"939", "commit"=>"Get History"} 

EDIT

私はhidden_field_tagにそれらを追加することができますことを認識してんだけど、paramsが、多くのことができると私はできません隠されたフィールドを追加し続ける。だから、私は上記の方法が働いていない理由を理解する必要があります。 hidden_field_tag

= form_tag history_path(params), :method => :get do 
    = hidden_field_tag :visit_id, 1 
    = hidden_field_tag :company_id, 32 
    = radio_button_tag :history_id, @history.id, true 
    History 
    %br 

    = submit_tag "Get History", class: "btn generate" 

として、それらを追加する

+0

フォームに非表示のフィールドオブジェクトとして追加できます。彼らがあなたの強力なパラメータを渡すことを許可することを確認してください。 – DevJem

答えて

3

として、今あなたがのparams内のデータを受け取ることになります、それは、単なるHTMLですメソッドを呼び出すと、urlアクション上にあるすべてのget変数が置き換えられ、フォーム上にある変数だけが置き換えられます。 これを組み合わせて、URLにget変数を送信しますが、getではなくpostとしてフォームを送信することができます。 この場合、2つのオプションがあります@Deepak Mahakaleが送信したソリューションを使用するか、フォームを転記して変更し、コントローラとルートのそれぞれの変更を行います。

+1

これは良い説明です、また 'GET'要求はボディを持っていません。 –

2

試してみて、自分のフォームがGETを持っているので、これはレールの問題ではありません

Parameters: {"utf8"=>"✓", "history_id"=>"939", "visit_id" => "1", "company_id" => "32", "commit"=>"Get History"} 
+0

これはうまくいくと思いますが、** params **は数多くあり、隠れたフィールドを追加することはできません。私はなぜ私の方法は動作しません理解する必要があります – Abhi

関連する問題