我对渲染的分页对象的工作原理感到困惑。以此为例:
当我跑步时
<%= 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>
为什么吗
我一直试图解决这个问题很长一段时间,因为我的部分内容中有很多表格和链接混乱。我希望能够通过另一个部分来呈现所述表单和链接。
感谢您的帮助。
答案 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。