如何在一个页面中按created_time显示我的微博和文章?

时间:2013-03-05 14:49:26

标签: ruby-on-rails

routes.rb

root :to => 'articles#index'

Micropost模型:

class Micropost < ActiveRecord::Base
  attr_accessible :content, :user_id
  belongs_to :user
  validates :user_id, presence: true
  validates :content, presence: true, length: { maximum: 100 }
end

文章模型:

class Article < ActiveRecord::Base
  attr_accessible :content, :title

  validates :title, :presence => true,
                :length => { :minimum => 2 }  
  belongs_to :user
end

articles_controller.rb的索引define_method

def index
  @articles = Article.paginate(:page => params[:page], 
                       :per_page => 5,
                       :order => 'created_at DESC')


  respond_to do |format|
    format.html 
    format.json { render json: @articles }
  end
end

虽然我不怎么写我的articles_controller #index和索引视图。

2 个答案:

答案 0 :(得分:0)

究竟是什么问题?

如果您想在一个页面上使用所有文章,只需不要使用分页,而是:

Article.all

如果您希望按create_at时间戳排序的所有文章按降序排列:

Article.order("created_at DESC")

或者你想要一个不同排序的第二页?然后我会创建一个新的路由,它接受一个参数来告诉你想要的动作。然后在控制器内部:

if(params[:order_by_created_time])
  # ...
else
  # ... 
end

respond_to do |format|
  # ...
end

如果您的视图已在使用(并显示微博):

def index
  @articles = Article.order("created_at DESC")

  respond_to do |format|
    format.html 
    format.json { render json: @articles }
  end
end

答案 1 :(得分:0)

鉴于您的代码有效,您应该只需将updated_at更改为created_at

即可
def index
  @posts = Post.paginate(:page => params[:page], 
                       :per_page => 5,
                       :order => 'created_at DESC')

  respond_to do |format|
    format.html 
    format.json { render json: @posts }
  end
end