3

我有一个对应于项目的 rails 模型和控制器。每个项目都有多个状态。假设状态可以是提案、批准、存档。

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

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

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

这两个中的哪一个是正确的方法和/或我在rails中遗漏了一些东西?

4

1 回答 1

6

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

# routes.rb

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

# ProjectsController.rb

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

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

于 2012-09-10T22:42:13.283 回答