我有一个分层部分方案,并且正在尝试编写DRY代码。 我需要传递一个变量到一个局部区域并保持它的数组状态,这样在局部区域内我可以用:collection
参数渲染另一个局部区域。将整个数组作为局部变量传递给partial,然后渲染另一个局部集合
此页面上我渲染'feed'
部分:
%div.row
%div.span6
%h1 Posts
/Post feed
=render 'feed',:locals => {:feed_items => @posts}
%div.span6
%h1 Groups
/Group feed
=render 'feed', :locals => {:feed_items => @groups}
这里是'feed'
部分:
%ol
-if feed_items.first.is_a?(Post)
=render :partial => 'post_feed_item', :collection => feed_items
-else
=render :partial => 'group_feed_item', :collection => feed_items
=will_paginate feed_items
目前给我这个错误:
undefined local variable or method `feed_items' for #<#<Class:0x007fa8e2aa8b00>:0x007fa8e5405390>
更新1:
真正的错误。最终部分不承认:collection
传递给它的组分:
undefined local variable or method `feed_item' for #<#<Class:0x007fa8e2aa8b00>:0x007fa8e2c6d670>
最终部分'post_feed_item'
(层3):
%li.feed_item.row-fluid
%div.image.span3
=link_to image_tag(feed_item.assets.empty? ? '/assets/small.png': feed_item.assets.first.image.url(:small), :alt => feed_item.title), post_url(feed_item)
因此,有在第一部分的一些问题.. 。feed_items
未被解析为数组?
您需要显示错误的部分位置。看起来您正在对您的post_feed_item或group_feed_item部分之一调用feed_item,这是不正确的。约定是局部变量具有与局部名称相同的名称 – jvnill 2013-02-19 01:57:20
好吧,让我试着更改本地var名称 – Brian 2013-02-19 02:00:03
等待,这意味着我需要制作两个'feed'部分。一个用于组和一个用于帖子 – Brian 2013-02-19 02:01:42