通过控制将2个模型一起渲染

时间:2014-02-01 18:59:32

标签: ruby ruby-on-rails-3 activerecord

我有2个模型:文本模型和图像模型。

text = object from text model
img  = object from image model

我想在我的主页上渲染这两个模型中的对象,如下所示:

text
text
img
text
text
img
etc...

当我在我的控制器中执行此操作时:

texts = Text.where("published = ?", true, :order => "created_at DESC")
images = Image.offset(rand(Image.count)).first
@posts = texts + images

我从两者中获取对象,但图像不是我想要的对象。有没有办法控制图像模型中的对象出现在哪里?像这样:

@posts = texts + images.after(3)

@posts = texts + images.every(3)

谢谢。我想简明扼要。如果我能提供任何其他信息,我将很乐意。

1 个答案:

答案 0 :(得分:0)

如果图像重复怎么办?你可以循环遍历数据并创建像

这样的哈希
{1=> [imgobj,imgobj,txtobj], 2=> imgobj,imgobj,txtobj]}, 

使用此哈希显示视图中的数据。

控制器动作:

@hsh = {} 
texts.each_slice(2).each do |text|
  images = Image.offset(rand(Image.count)).first
  count = 1
  @hsh[count] = [text[0],text[1], images]
  count+=1
end

在视图中:

@hsh.each do |k,v|
  v.each do |u|
    u
  end
end