Rails скрытое поле неопределенный метод ошибка слияния


152

Я хочу сделать что-то подобное в рельсах

Вот то, что я до сих пор в рельсах:

<%= form_for @order do |f| %>
  <%= f.hidden_field :service, "test" %>
  <%= f.submit %>
<% end %>

Но тогда я получаю эту ошибку:

undefined method `merge' for "test":String

Как я могу передать значения в моем скрытом поле в рельсах?


64
Вы бы приняли ответ?
apneadiving

Ответы:


417

Ты должен сделать:

<%= f.hidden_field :service, :value => "test" %>

hidden_field ожидает хэш в качестве второго аргумента


9
Это немного противоречиво, поскольку мы также пишем, <%= hidden_field_tag :service, "test" %>когда не используем form_for |f|...
Августин Ридингер,

55

Вы используете скрытое поле вместо скрытого тега поля. Поскольку вы используете версию, отличную от _tag, предполагается, что ваш контроллер уже установил значение этого атрибута для объекта, который поддерживает форму. Например:

контроллер:

def new
  ...
  @order.service = "test"
  ...
end</pre>

Посмотреть:

<%= form_for @order do |f| %>
  <%= f.hidden_field :service %>
  <%= f.submit %>
<% end %>




0

Кстати, я не использую скрытые поля для отправки данных с сервера в браузер. Атрибуты данных потрясающие. Ты можешь сделать

<%= form_for @order, 'data-service' => 'test' do |f| %>

А затем получить значение атрибута с помощью jquery

$('form').data('service')
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.