【问题标题】:Rails passing form_for object to partialRails 将 form_for 对象传递给部分
【发布时间】:2012-08-28 02:42:42
【问题描述】:

我想将form_for 对象传递给部分对象:

<%= form_for @price do |f| %>
   ...
   <%= render :partial => "price_page", :object => @price, :as => :f %>
   ...
<% end %>

当我打电话时:

f.radio_button

带来错误:

undefined method `radio_button' for #<Price:0x3cb1ed0>

我怎样才能像通常在这个部分中那样使用f

【问题讨论】:

    标签: ruby-on-rails object partials actionview


    【解决方案1】:

    尝试将表单对象作为本地对象传递 &lt;%= render :partial =&gt; "price_page", :locals=&gt;{:f=&gt;f} %&gt;

    【讨论】:

    • 我遇到的唯一问题是你不能在部分中包含nested_form。返回错误。
    【解决方案2】:

    您可以将表单构建器对象作为局部变量传递,如下所示,

    <%= form_for @price do |f| %>
         <%= render :partial => "price_page", :locals => { :f => f } %>
    <% end %>
    

    在您的部分文件中,您将收到表单生成器作为局部变量“f”,您可以像下面这样使用,

      <% f.radio_button, {} %>
    

    【讨论】:

    • 是的,但几分钟后!
    • 是的,所以我对急于成为第一个回答的人很残酷。
    【解决方案3】:

    我遇到了这个问题,试图弄清楚如何在没有额外表单标签的情况下将表单构建器放入部分。这是我能想到的这个问题的主要用例,所以我要为未来的访问者添加这个答案。

    为了解决我的问题,我在我的布局中有我的 form_for 并且我只渲染了我的部分传递模型。在我的部分我使用fields_for

    看起来(有点)像这样:

    = form_for @price do |f|
       ...
       = render partial: "price_page", object: @price, as: 'price %>
       ...
    

    然后,我的部分是这样的:

    = fields_for price do |f|
       ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多