【问题标题】:How to pass name of form_for's method to partial in rails?如何将form_for方法的名称传递给rails中的部分?
【发布时间】:2012-10-06 18:20:10
【问题描述】:

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

谢谢你们!

【问题讨论】:

    标签: ruby ruby-on-rails-3 partial-views


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!虽然我已经解决了这个问题,你的解决方案可以考虑作为我的一个选项
    【解决方案2】:

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

    m = form.method(name_of_the_method)
    m.call(parameters)
    

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多