Ruby on Rails:关于在分页对象中渲染部分内容

时间:2012-11-16 00:11:23

标签: ruby-on-rails ruby-on-rails-3 object pagination partial-classes

我对渲染的分页对象的工作原理感到困惑。以此为例:

当我跑步时

<%= render :partial => 'feeds/share_item', collection: @share_items %>
<%= will_paginate @share_items %>

我可以去_share_item.html.erb,我可以这样做......

<%= link_to "Delete", share_item, method: :delete, 
data: { confirm: "Are you sure you want to delete this?" }, 
class: "btn-link", title: share_item.content %>

...它将有删除链接,一切顺利。

但是,仍然在_share_item.html.erb,如果我用...替换它

<%= render :partial => 'shared/delete' %>

......我明白了:

undefined local variable or method 'share_item' for #<#<Class:0xaf0b888>:0xb15cb3c>

为什么吗

我一直试图解决这个问题很长一段时间,因为我的部分内容中有很多表格和链接混乱。我希望能够通过另一个部分来呈现所述表单和链接。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

现在,变量share_item为空,因为它尚未提供给partial。 你需要做这样的事情:

<% @share_items.each do |share_item| %>
  <%= render :partial => 'shared/delete', :locals => { :share_item => share_item } %>
<% end %>

或者,稍微简洁一点

<% @share_items.each do |share_item| %>
  <%= render 'shared/delete', share_item: share_item %>
<% end %>

或者,甚至更好:

<%= render 'shared/delete',  collection: @share_items %>

您可以找到更多信息here