boc*_*son 1 ruby ruby-on-rails rails-activerecord
我正在使用ruby on rails创建一个博客应用程序.我能够允许用户添加帖子,但在页面顶部,首先创建的帖子首先出现.我希望最新的博客文章首先出现.我该怎么做呢?让我知道我需要在这里添加哪些代码文件.
我的文章控制器
class ArticlesController < ApplicationController
def new
@article = Article.new
end
def index
@articles = Article.paginate(:page => params[:page], :per_page => 10)
end
def show
@article = Article.find(params[:id])
end
def create
@article = Article.new(article_params)
@article.save
redirect_to @article
end
def edit
@article = Article.find(params[:id])
end
def update
@article = Article.find(params[:id])
if @article.update(article_params)
redirect_to @article
else
render 'edit'
end
end
def destroy
@article = Article.find(params[:id])
@article.destroy
redirect_to articles_path
end
end
private
def article_params
params.require(:article).permit(:title, :text, :datee)
end
Run Code Online (Sandbox Code Playgroud)
我会在模型中设置一个默认范围,你可以使用,order但我喜欢这样做,因为我通常总是希望应用这个顺序,这样我就不必继续使用了order.把它放在你的模型中,它应该重新排序.
article.rb
# Scopes
default_scope {order(created_at: :desc)}
Run Code Online (Sandbox Code Playgroud)
如果设置了默认范围,则无需进一步操作,文章将默认为该顺序.
如果您不希望它始终默认为该订单,您可以只调用常规范围.
article.rb
scope :recent_first, -> {order(created_at: :desc)}
Run Code Online (Sandbox Code Playgroud)
然后在你将使用的Index操作中
def index
@articles = Article.recent_first.paginate(:page => params[:page], :per_page => 10)
end
Run Code Online (Sandbox Code Playgroud)
如果你真的只需要在这一点上做到这一点order,正如Adam Lassek在下面的评论中提到的那样,也可以.
def index
@articles = Article.order(created_at: desc).paginate(:page => params[:page], :per_page => 10)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |