シンプルなフォームで非表示フィールドを作成するにはどうすればよいですか?
次のコード:
= simple_form_for @movie do |f|
= f.hidden :title, "some value"
= f.button :submit
このエラーが発生します:
undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0
これを試して
= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
まだ短い!!!
=f.hidden_field :title, :value => "some value"
より短く、より乾燥し、おそらくより明白です。
もちろんRuby 1.9と新しいハッシュ形式では、3文字短くすることができます...
=f.hidden_field :title, value: "some value"
正しい方法(hidden_field入力の値をリセットしない場合)は次のとおりです。
f.hidden_field :method, :value => value_of_the_hidden_field_as_it_comes_through_in_your_form
:method
は、オブジェクトで呼び出されたときに必要な値になるメソッドです
したがって、上記の例を次に示します。
= simple_form_for @movie do |f|
= f.hidden :title, "some value"
= f.button :submit
この例で使用されるコードは、フォームから渡される@movieの値(:title)をリセットします。ムービーの値(:title)にアクセスする必要がある場合、リセットする代わりに、これを実行します。
= simple_form_for @movie do |f|
= f.hidden :title, :value => params[:movie][:title]
= f.button :submit
再びユーザーの送信した値をリセットしたくない場合にのみ私の回答を使用します。
これが理にかなっていることを願っています。
= f.input_field :title, as: :hidden, value: "some value"
オプションでもあります。ただし、フォームビルダー用に定義されたラッパーはスキップされることに注意してください。