私はhidden_fields
の専門的な定義を読みましたが、それが実際に何をしているのかわかりません。私の理解では、特定のパラメーターの属性を渡すことができます。たとえば、リッチな結合モデルがある場合は、hidden_field
を使用して、user_idをユーザーの結合モデル属性に割り当てることができます。あれは正しいですか?
もしそうなら、フォームまたはコントローラでそれを行う方が良いでしょうか?
これらのメソッドはどちらも、「非表示」タイプのHTML入力タグを作成するためのヘルパーです。そうです、これらはリクエストにパラメーターを追加するために使用されます(通常はフォームPOST)。実際には、パラメーターは、要求と一緒に送信したい情報の一部にすることができます。ただし、隠しフィールドは簡単に改ざんされるため、注意が必要です。
これは、非表示フィールドでユーザーIDを送信する例です
# Form
<%= form_tag foo_path do %>
<%= hidden_field_tag "user_id", @user.id %>
....
<%= submit_tag "Click Me" %>
<% end %>
# Controller
def foo
# params[:user_id] is set with the value from the hidden field
# Do useful stuff with the POST data
end
このようなuser_idのようなものを渡すことができますが、それが必要になることはまれです。特定の状況でuser_idが常に必要な場合は、ネストされたルートの使用を検討してください http://guides.rubyonrails.org/routing.html#nested-resources 。
隠しタイプの入力フィールドを生成します...
_<input type="hidden" />
_
これは、表示されるフィールドがなくても、フォームで送信したい情報を保存する方法です。
ドキュメント から:
_hidden_field_tag 'tags_list'
_が生成する...
_<input id="tags_list" name="tags_list" type="hidden" />
_
_hidden_field_tag
_は、モデルなしで使用するためのものですが、_hidden_field
_は、_form_for
_呼び出しおよびモデルと組み合わせて使用するためのものです。
hidden_field(:signup, :pass_confirm)
が生成します...
_<input type="hidden" id="signup_pass_confirm" name="signup[pass_confirm]" value="#{@signup.pass_confirm}" />
_