単純なフォームで隠しフィールドを作成するにはどうすればよいですか?
次のコード:
= 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" }
simple_form
非表示の入力を行う方法ですが、非表示の入力のみが必要な場合はhidden_field
、Simple Formがすべてのフォームビルダーメソッドを継承するため、Railsのフォームビルダーを使用します。
最短です!!!
=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
繰り返しますが、私の回答を使用するのは、ユーザーが送信した値をリセットしたくない場合です。
これが理にかなっているといいのですが。
simple_form_for
、hidden
ここを使用するメソッドはundefined method
、#<SimpleForm :: FormBuilder:0x00007ffa6cde0be8> `のエラーを非表示にします'
= f.input :title, :as => :hidden, :input_html => { :value => "some value" }