web-dev-qa-db-ja.com

rails simple_form-非表示フィールド-作成しますか?

シンプルなフォームで非表示フィールドを作成するにはどうすればよいですか?

次のコード:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit

このエラーが発生します:

undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0
168
Oleander

これを試して

= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
296
fl00r

まだ短い!!!

=f.hidden_field :title, :value => "some value"

より短く、より乾燥し、おそらくより明白です。

もちろんRuby 1.9と新しいハッシュ形式では、3文字短くすることができます...

=f.hidden_field :title, value: "some value"
274
Michael Durrant

正しい方法(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

再びユーザーの送信した値をリセットしたくない場合にのみ私の回答を使用します。

これが理にかなっていることを願っています。

5
Uzzar
= f.input_field :title, as: :hidden, value: "some value"

オプションでもあります。ただし、フォームビルダー用に定義されたラッパーはスキップされることに注意してください。

5
Fuad Saud