シンプルなフォームで隠しフィールドを作成するにはどうすればよいですか?
次のコード:
= simple_form_for @movie do |f|
= f.hidden :title, "some value"
= f.button :submit
このエラーが発生します。
undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0
シンプルなフォームで隠しフィールドを作成するにはどうすればよいですか?
次のコード:
= 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"
もオプションです。ただし、フォームビルダー用に定義されたラッパーはスキップされることに注意してください。