ruby-on-rails - 将 bool 参数传递给 rails Controller ?

标签 ruby-on-rails controller parameter-passing

我有一个名为 :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 中有一个单独的方法来处理只显示 :published 帖子的情况吗?
  • 我可以改变 index 方法来处理传递给它的参数吗?
  • link_to 会是什么样子?
  • 最佳答案

    理论上,对于按关键字/类别过滤结果,可以通过参数在同一 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/

    相关文章:

    php - 使用 Ajax 将表单数据发布到 ZF2 Controller

    javascript - Angular Directive(指令) - 动态 Controller

    python - 计算有多少参数作为位置传递

    c++ - 是否有C++编译器选项可允许主动删除所有函数调用并将参数传递给具有空主体的函数?

    python - 如何在 Get Endpoint Odoo v11 中发送 json 响应

    iphone - PhoneGap.exec() 在 JS 和 Obj-C 之间传递对象

    ruby-on-rails - 警告 : Can't verify CSRF token authenticity

    mysql - super 通用的数据库结构

    ruby-on-rails - 在 ActiveAdmin 过滤器中使用 ActiveRecord 范围

    ruby-on-rails - Rails "please wait"页面