使用嵌套资源时获取父资源的名称

时间:2011-06-02 18:16:06

标签: ruby-on-rails metaprogramming

我有一个评论控制器,它使用表单部分来添加评论。现在,此控制器嵌套在需要注释的任何父资源下。

resource :post do
  resource :comments
end
resource :poll
  resource :comments
end

如果我想要一个自动为正确资源配置的表单部分,我该怎么做?

现在我必须在嵌套资源的页面上设置表单,如下所示:

<%= form_for [@ post,@ comment] do | f | %GT;            <%= f.label:title%>       
      <%= f.text_field:title%>                 <%= f.label:body%>       
      <%= f.text_area:body%>                 <%= f.submit%>      <%end%>

我想有一个看起来像上面的代码,但我可以调用<%= render 'comments/form' %>

关于实现这一目标的最佳方法的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以使用locals hash将局部变量传递给comments partial来解决此问题:

在您的嵌套资源中,让我们说帖子的视图:

<%= render 'comments/form', :locals => {:resource => @post} %>

您的意见表:

<%= form_for [resource, @comment] do |f| %>
  <%= f.label :title %> 
  <%= f.text_field :title %> <%= f.label :body %>  
  <%= f.text_area :body %> <%= f.submit %>
<% end %>

另外,我建议您在详细说明的partials上查看本指南。