2012-10-05 67 views
0

美好的一天!小newbee問題: 比方說,我想生成form_for字段的助手的領域。因此爲了不重複複雜的代碼來生成模型的許多字段,我渲染一些部分並傳遞參數。其中有一個表單對象的引用。
問題是什麼通過渲染方法來調用表單對象的部分必要方法?例如,我想生成這個時候email_field:如何將form_for的方法的名稱傳遞給rails中的partial?

<%= 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> 

感謝你們!

回答

0

使用紅寶石電源。 Object#send方法:

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

<%= f.send(field_type, :name) %> 
+0

謝謝!儘管我已經解決了這個問題,並且你的解決方案可能被認爲是我的一個選擇 –

0

下面的方法證明是通過它的名字來調用Ruby對象的功能,以最快的方式:

m = form.method(name_of_the_method) 
m.call(parameters) 
相關問題