0

再会!新手小问题:假设我要生成 form_for 特殊外观助手的字段。因此,为了不重复复杂的代码来生成模型的许多字段,我渲染了一些部分并在那里传递参数。其中有一个对表单对象的引用。
问题是什么传递给 render 方法来调用表单对象的部分必要方法?比如我这次要生成email_field:

<%= form_for @order do |f| %>
<%= render :partial => 'form_field_special', :locals => {:form => f, :type => :email_field, :labelcaption => "SpcName"} %>
<% end %>

和部分本身:

<div class="control-group">
<%= f.label :name, <%= labelcaption %> , :class => "control-label" %>
<div class="controls">
<%= f.type :name %> # ??????
</div>
</div>

谢谢你们!

4

2 回答 2

0

使用红宝石能量。对象#send方法:

<%= form_for @order do |f| %>
  <%= render :partial => 'form_field_special', :locals => {..., :field_type => 'email_field'} %>
<% end %>

<%= f.send(field_type, :name) %>
于 2012-10-05T12:47:29.533 回答
0

以下方法被证明是通过名称调用 ruby​​ 对象函数的最快方法:

m = form.method(name_of_the_method)
m.call(parameters)
于 2012-10-06T10:20:10.043 回答