rails simple_form-隠しフィールド-作成?


回答:


309

これを試して

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

8
ありがとう、うまくいきました。= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
Linus Oleander 2011年

5
これはsimple_form非表示の入力を行う方法ですが、非表示の入力のみが必要な場合はhidden_field、Simple Formがすべてのフォームビルダーメソッドを継承するため、Railsのフォームビルダーを使用します。
scarver2 14年

281

最短です!!!

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

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

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

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

1
または<%= f.hidden_​​field:term_id、:value => @ transaction.term_id%>
mirap 11/11/15

2
これは受け入れられる答えになるはずです。質問は単純なフォームについて尋ねましたが、これがより短い構文でまったく同じことを達成するときにそれを使用する理由はありません。
Greg Blass 2017

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

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


5

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

繰り返しますが、私の回答を使用するのは、ユーザーが送信した値をリセットしたくない場合です。

これが理にかなっているといいのですが。


1
の場合simple_form_forhiddenここを使用するメソッドはundefined method 、#<SimpleForm :: FormBuilder:0x00007ffa6cde0be8> `のエラーを非表示にします'
Meas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.