2012-03-23 35 views
0

我正在砸我的头,想出一种方法来获得不同的部分集合。我用这个来列出谐音称为@feed_items的集合(在“分享Tweet”类)及其对一类工作的伟大:部分的异构集合

<%= render :partial => 'shared/feed_item', :collection => @feed_items %> 

@feed_promos泛音有不同的类的对象(“促销”级),并且它们与feed_item部分位于相同的“共享”目录中。有没有人知道集合中有@feed_promo和@feed_item的代码?

我曾尝试使用轨道3快捷这个简化:

<%= render [feed_items, feed_promos] %> 

,但我得到一个错误,因为它希望找到的鸣叫模型的模板,但它不存在,我想谐音的集合,而不是不同类的对象(比如Tweets)。我已经去到relationship.rb和tweet.rb并已包括:

def to_partial_path 'shared/' 

回答

0

把你的谐音分别tweets/_tweet.html.erbpromotions/_promotion.html.erb

在你的控制器使一个单一的集合:

@feed = @feed_items + @feed_promos 

在您看来:

<%= render @feed %> 
+0

不幸的是它没有工作。 +在控制器中未被识别,所以我将其更改为'&&'。是对的吗?此外,你的意思是'_tweet.html.erb'的部分名称,而不是'_tweet.rb'?我尝试了这些更改,但仍在页面上出现ArgumentError:'nil'不是返回有效部分路径的ActiveModel兼容对象。 – Tim 2012-03-29 03:39:54

+0

对不起,在扩展名上的错误,它被编辑。 “@ feed_items”和“@ feed_promos”有哪些类型? '+'操作符将两个数组合并成一个。它可以在我的电脑上正常工作。 '&&'是错误的:它是一个逻辑AND并返回nil或第二个操作数。你得到一个错误,因为'@ feed'是'nil'而不是'Array'。 – 2012-03-29 14:06:11