我有一个名为 :published 的 bool 值的 post 对象。 Controller 中索引的定义如下所示:
def index
@posts = Post.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @posts }
end
end
这链接到该页面:
<%= link_to 'All posts', posts_path %>
假设我想要只显示 post.published 的帖子的选项?是真的。
最佳答案
理论上,对于按关键字/类别过滤结果,可以通过参数在同一 Controller 中显示逻辑。我会把它作为:
<%= link_to 'All posts', posts_path(:published => true) %>
然后在您的 Controller /索引操作中:
def index
@posts = Post.all
@posts = @posts.where(:published => true) if params[:published].present?
...
为了重构你的代码,我会在模型中定义方法的范围,比如:
scope :published, where(:published => true)
然后在您的 Controller 中,您可以拥有:
@posts = @posts.published if params[:published].present?
有关链接/模型范围的更多信息:http://guides.rubyonrails.org/active_record_querying.html#scopes
关于ruby-on-rails - 将 bool 参数传递给 rails Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148774/