ruby-on-rails - 在 Rails 中执行类似操作的正确方法

标签 ruby-on-rails ruby-on-rails-3

我有一个与项目相对应的 Rails 模型和 Controller 。每个项目都有多个状态。假设状态可以是提案、已批准、已存档。

在我的 Controller 中,我有一个索引操作。但是,在我对整个应用程序的看法中,我想链接到提案、批准和存档的项目,并且只显示这些项目。

我可以创建诸如批准、提议、存档等操作,并让这些操作仅获得匹配的操作。

我正在考虑的另一件事是,每个链接都将变量传递给参数,然后指示索引操作的作用。

这两个中哪一个是正确的方法和/或我是否遗漏了 rails 中的某些内容?

最佳答案

我绝对更喜欢在参数中设置变量的选项。这样更干爽,添加新状态几乎毫不费力。为了实现它,我将使用以下代码:

# routes.rb

match 'projects/:filter' => 'projects#filter', :constraints => { :filter => /^approved$|^archived$|^proposal$/}

# ProjectsController.rb

  def filter
    @projects = Project.where(:status => params[:filter])
  end

这样,如果您添加更多状态,您所要做的就是允许在路由定义中进行过滤。

关于ruby-on-rails - 在 Rails 中执行类似操作的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12360188/

相关文章:

ruby-on-rails - 在 Rails 中引用表条目

ruby-on-rails - 如何根据开发数据库模式重新创建测试装置

ruby-on-rails - 从 Rails 上的 base64 编码图像中检索文件名和内容类型

ruby-on-rails - 未定义的局部变量或方法 `sign_out'

ruby-on-rails - 验证 Rails 中的日期时间

ruby-on-rails - PayPal express /活跃商家 - 不显示订单项或购物车总数?

ruby-on-rails - 设置cookie。在Rails 5 Controller 集成测试中签名

ruby-on-rails - 如何使用 Capistrano gem 为生产数据库播种?

mysql - 尝试用 ruby​​ 创建前十名列表

ruby-on-rails - 如何运行单个 RSpec 测试?