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

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

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

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

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

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

person Linus Oleander    schedule 20.03.2011    source источник


Ответы (4)


попробуй это

= f.input :title, :as => :hidden, :input_html => { :value => "some value" }
person fl00r    schedule 20.03.2011
comment
Спасибо, это сработало. = f.input :title, :as => :hidden, :input_html => { :value => "some value" } - person Linus Oleander; 21.03.2011
comment
Это simple_form способ сделать скрытые вводы, однако, если нужен только скрытый ввод, то просто используйте hidden_field построитель форм Rails, так как Simple Form наследует все методы построителя форм. - person scarver2; 04.11.2014

Самый короткий!!!

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

Короче, СУХЕ и, возможно, более очевидно.

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

=f.hidden_field :title, value: "some value"
person Michael Durrant    schedule 05.09.2011
comment
Или ‹%= f.hidden_field :term_id, :value =› @transaction.term_id %› - person mirap; 11.11.2015
comment
Это должен быть принятый ответ. Несмотря на то, что вопрос задан о простой форме, нет причин использовать ее, когда она выполняет то же самое с более коротким синтаксисом. - person Greg Blass; 25.02.2017

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

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

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

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

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

Я надеюсь в этом есть смысл.

person Uzzar    schedule 04.08.2014
comment
Для simple_form_for метод hidden, используемый здесь, вызовет ошибку undefined method hidden' для #‹SimpleForm::FormBuilder:0x00007ffa6cde0be8›` - person Kiry Meas; 02.07.2018