如何将Ruby哈希键和值传递给Rails FormHelper函数?

时间:2010-10-10 19:18:19

标签: ruby-on-rails ruby

在控制器中,我想做:

@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 个答案:

答案 0 :(得分:2)

您不需要使用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 %>

答案 1 :(得分:0)

在我发布问题并更彻底地考虑之后(并且运气好),我找到了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 } %>
      <% } %>
 }
 %>