【问题标题】:Loop through two object arrays, sort by date created遍历两个对象数组,按创建日期排序
【发布时间】:2014-01-27 23:07:30
【问题描述】:

我正在尝试弄清楚如何循环遍历两个对象数组并在视图中以混合顺序显示它们——按它们的创建日期。

这是我当前的控制器代码,它仅根据您所在的类别或基于搜索查询显示帖子:

def browse
  @user = current_user
  if params[:category]
    @category = Category.find(params[:category])
    @posts = @category.posts.page(params[:page])
  else
    @posts = Post.search(params)
  end
end    

在视图中,我只是像这样循环并输出这些:

- if @posts
  - @posts.each do |post|
    = post.name
    = post.content

我想做的不是通过实例变量@posts 引用帖子...我想创建一个新变量(即:@everything)——它从 Post 类和注释类,将它们弹出到同一个数组中,并允许我在视图中分别循环和输出每个,如下所示:

理想控制器:

def browse
  @user = current_user
  if params[:category]
    @category = Category.find(params[:category])
    @everything = @category.everything(params[:page]) # ... combination of comments and posts
  else
    @everything = Everything.search(params)
  end
end    

理想视图:

- if @everything
  - @everything.each do |e|
    - if e.type == 'post'
      = e.name
      = e.content
    - else 
      = e.comment

感谢任何帮助/指导。我只是不确定如何解决这个问题。

【问题讨论】:

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


    【解决方案1】:

    你会做这种事情(让你开始)

    def browse
      @user = current_user
      @everything = @category.posts | @category.comments
    end 
    

    在视图中

    %ul= render @everything
    

    确保有一个views/cmets/_comment.html.haml 和一个views/posts/_post.html.haml 文件。

    或者您可以渲染特定的部分并处理其中的任何差异

    %ul= render :partial => shared/everything_item, :collection => @everthing
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 2019-01-22
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多