2011-10-11 6 views
13

私はhidden_fieldsというハイテクな定義を読んでいますが、本当にそれが何であるかはわかりません。私の理解は、あなたが特定のパラメータの属性を渡すことができるということです。たとえば、豊富な結合モデルがある場合は、hidden_fieldを使用してuser_idをユーザーの結合モデル属性に割り当てることができます。あれは正しいですか?rails - hidden_​​fieldとhidden_​​field_tagの正確な動作は何ですか?

もしそうなら、それはフォームやコントローラで行うのがよいでしょうか?

+1

は 'hidden_​​field'は、単に' 'の"を作成します。OGZの@wizard – Zabba

答えて

29

これらのメソッドはいずれも、「hidden」タイプのHTML入力タグを作成するヘルパーです。これらのメソッドは、リクエスト(通常はフォームPOST)にパラメータを追加するために使用されます。本当にパラメータは、リクエストとともに送信したい情報のいずれかにすることができます。しかし、隠されたフィールドは簡単に改ざんされるので注意してください。ここで

あなたは、このようなこのようなuser_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 

をユーザIDを送信する例です、私はそれのための必要性はまれであることがわかります。特定の状況に常にuser_idが必要な場合は、ネストされたルートhttp://guides.rubyonrails.org/routing.html#nested-resourcesの使用を検討することもできます。

+0

感謝を。私はhidden_​​field'のだろう 'を考えた...生成しますリッチ・ジョイン・モデルを使って関連付けを行うと、自動的にuser_idのようなものを更新することになっていますか?そうであれば、私は明らかに私のアソシエーションに間違ったことをしています。ありがとう。また、別の質問をここに掲載しました:[質問](http://stackoverflow.com/questions/7740873/nested-attributes-not-saving-the-user-id-in-join-テーブル)あなたが見てみたい場合。ありがとう。 – noob

+0

ああ、私は問題が他の質問でよりよく説明されていると思います、私はそこに投稿します –

10

これは、入力フィールドの非表示の種類を生成する...

<input type="hidden" />

これは、あなたが目に見えるフィールドを持つことなく、フォームで送信したい情報を保存する方法です。 documentationから

hidden_fieldform_forコールやモデルと組み合わせて使用​​されることを意味しているのに対し、

hidden_field_tag 'tags_list'が発生...
<input id="tags_list" name="tags_list" type="hidden" />

hidden_field_tagは、モデルなしで使用されることを意味しています。

hidden_field(:signup, :pass_confirm)
<input type="hidden" id="signup_pass_confirm" name="signup[pass_confirm]" value="#{@signup.pass_confirm}" />