0

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

当我跑

<%= 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>

为什么?

我一直在尝试解决这个问题很长一段时间,因为我的部分表格和链接杂乱无章。我希望能够通过另一个部分呈现所述表单和链接。

谢谢你的帮助。

4

1 回答 1

1

现在,变量 share_item 是空的,因为它没有提供给部分。你需要做这样的事情:

<% @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 %>

你可以在这里找到更多信息。

于 2012-11-16T00:46:17.060 回答