rails простая форма-скрытое поле-создать?

Как вы можете иметь скрытое поле с простой формой?

следующий код:

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

приводит к этой ошибке:

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

4 ответов


попробуй такое

= 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"

= f.input_field :title, as: :hidden, 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

код, используемый в Примере, сбросит значение (:title) @movie, передаваемое формой. Если вам нужно получить доступ к значению (: title) фильма, вместо его сброса, сделайте это:

= simple_form_for @movie do |f|
  = f.hidden :title, :value => params[:movie][:title]
  = f.button :submit

снова используйте только мой ответ, вы не хотите сбрасывать значение, представленное пользователем.

Я надеюсь, что это имеет смысл.