我有一個分層部分方案,並且正在嘗試編寫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