首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ruby on rails中创建facebook风格的新闻提要?

如何在ruby on rails中创建facebook风格的新闻提要?
EN

Stack Overflow用户
提问于 2010-02-11 11:58:59
回答 2查看 5.8K关注 0票数 17

我正在尝试将对象融合到单个流中。

我创建了一个名为Newsfeed的新模型和控制器。我有它,所以新闻提要has_many :messages和has_many :图像和图像以及消息belong_to :newsfeed。我现在正在设置控制器,并且我有:

代码语言:javascript
复制
def index
    @messages = Messages.all
    @images = Images.all
    @feed = ?
end

我如何融合它们,以便它可以从两者中提取,并在每个需要单独格式化时按时间顺序放置它们?

任何帮助都将非常感谢,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2010-02-11 20:04:49

你可以这样做:

控制器:

代码语言:javascript
复制
def index
    messages = Messages.all
    images = Images.all
    @feed = (messages + images).order_by(&:created_at)
end

查看index.html.erb:

代码语言:javascript
复制
<%= render @feed %>

查看_feed.html.erb:

代码语言:javascript
复制
<% if feed.is_a? Message %>
  <%= render "message", :locals => {:message => feed}%>
<% else %>
  <%= render "image", :locals => {:image => feed}%>
<% end %>

并加上两个分音_message.html.erb和_image.html.erb

票数 18
EN

Stack Overflow用户

发布于 2010-02-12 04:13:26

我确信这可以从它的ghetto多态性中简化出来,但它对我来说是有效的,我也遇到了同样的问题:“我如何组合所有这些模型结果?!”

我使用一个单独的模型,像你一样,和一个观察者:

代码语言:javascript
复制
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

然后,在Newsfeed模型中,您可以随心所欲地拉取和整理:

代码语言:javascript
复制
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

然后,只需拉出它们并以您喜欢的方式显示在视图中。

代码语言:javascript
复制
#Controller
def index
  @feed = Newsfeed.get_items
end

接下来,我可能会开始在流跟踪模型中加入更多内容,以便在其他表中保存命中率,但希望您能理解。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2242173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档