Помилка прихованого поля, невизначена методом помилки "злиття"


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.