rails simple_form - скрытое поле - создать? - PullRequest
168 голосов
/ 21 марта 2011

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

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

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

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

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

Ответы [ 4 ]

297 голосов
/ 21 марта 2011

попробуйте

= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
274 голосов
/ 05 сентября 2011

Пока самое короткое !!!

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

Короче, суше и, возможно, более очевидно.

Конечно, с ruby ​​1.9 и новым форматом хэша мы можем сделать на 3 символа короче с ...

=f.hidden_field :title, value: "some value"
5 голосов
/ 04 августа 2014

Правильный способ (если вы не пытаетесь сбросить значение ввода 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, передаваемое формой. Если вам нужно получить доступ к значению (: заголовку) фильма, а не к его сбросу, сделайте следующее:

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

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

Надеюсь, это имеет смысл.

5 голосов
/ 08 января 2014
= f.input_field :title, as: :hidden, value: "some value"

Также вариант. Однако обратите внимание, что он пропускает любую оболочку, определенную для вашего конструктора форм.

...