179

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

次のコード:

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

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

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

4 に答える 4

318

これを試して

= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
于 2011-03-20T21:07:04.700 に答える
287

まだ最短!!!

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

より短く、よりドライで、おそらくより明白です。

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

=f.hidden_field :title, value: "some value"
于 2011-09-05T00:30:04.010 に答える
6

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

ここでも、ユーザーが送信した値をリセットしたくないという私の答えのみを使用してください。

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

于 2014-08-04T14:15:13.497 に答える
5
= f.input_field :title, as: :hidden, value: "some value"

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

于 2014-01-07T21:49:50.457 に答える