Rails 将 form_for 对象传递给部分

Posted

技术标签:

【中文标题】Rails 将 form_for 对象传递给部分【英文标题】:Rails passing form_for object to partial 【发布时间】: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

【问题讨论】:

【参考方案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|
   ...

【讨论】:

以上是关于Rails 将 form_for 对象传递给部分的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数传递给Rails中的委托方法

如何正确地将参数传递给rails表单

如何在 Rails 中使用环境将参数传递给 Rake 任务? [复制]

如何将参数传递给 Rails 4 中的 has_many 关联范围?

在rails应用程序中通过ajax请求将参数传递给控制器

如何将查询参数传递给 Rails API 控制器?