我如何在Rails上创建一个Facebook风格的新闻提要呢?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我正在编控制器,我有:

def index
    @messages = Messages.all
    @images = Images.all
    @feed = ?
end

我该如何将它们结合在一起?

提问于
用户回答回答于

我使用一个单独的模型:

class NewsfeedObserver < ActiveRecord::Observer

  observe Message, Image

  def after_save(object)
    @item = Newsfeed.create(
              :item_id => object.id, 
              :item_type => object.class.to_s
    )
  end
end

然后:

def self.get_items
  item_list = []
  items = find(:all, :order => "created_at DESC", :limit => 30)
  items.collect{ |i| i.item_type.constantize.find(i.item_id) }
end

最后

#Controller
def index
  @feed = Newsfeed.get_items
end

用户回答回答于

你可以这样做:

def index
    messages = Messages.all
    images = Images.all
    @feed = (messages + images).order_by(&:created_at)
end

查看index.html.erb:

<%= render @feed %>

查看 _feed.html.erb:

<% if feed.is_a? Message %>
  <%= render "message", :locals => {:message => feed}%>
<% else %>
  <%= render "image", :locals => {:image => feed}%>
<% end %>

扫码关注云+社区