Как передать хэш-ключ и значение Ruby в функцию RailH FormHelper? - PullRequest
1 голос
/ 10 октября 2010

В контроллере я бы хотел сделать:

@options = { :obj_id => @obj.id, :obj2_id => @obj2.id }

А в виде:

<%=
remote_form_for(:model_object, :url => { :action => 'some_action' }) do |f|
     @options.each { |k, v|
       f.hidden_field(k, { :value => v })
     }
}
%>

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

Мой опыт подсказывает, что я упускаю что-то простое ... Чего мне не хватает?

Спасибо за помощь.

Ответы [ 2 ]

2 голосов
/ 11 октября 2010

Вам не нужно использовать send для этого, потому что hidden_field не является закрытым методом, а также методом, который вы вызываете динамическим. Это единственные две причины, по которым вы должны использовать send.

Вместо этого, заставьте вашу форму использовать больше тегов ERB:

<%= remote_form_for(:model_object, :url => { :action => 'some_action' }) do |f| %>
  <% @options.each do |k, v| %>
    <%= f.hidden_field(k, { :value => v }) %>
  <% end %>
<% end %>
0 голосов
/ 10 октября 2010

Сразу после того, как я опубликовал вопрос и обдумал его более тщательно (и с некоторой удачей), я нашел функцию object.send.Следующий код решает мою проблему:

В контроллере:

@options = { :obj_id => @obj.id, :obj2_id => @obj2.id }

В виде:

 <% remote_form_for(:model_object, :url => { :action => 'some_action' }) do |f| %>
      <% @options.each { |k, v| %>
        <%= f.send :hidden_field, k, { :value => v } %>
      <% } %>
 }
 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...