在Rails中执行类似操作的正确方法

Noa*_*ark 3 ruby-on-rails ruby-on-rails-3

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

在我的控制器中,我有一个索引操作.但是,在整个应用程序的观点中,我想链接到提案,已批准和已存档的项目,并仅显示这些项目.

我可以创建诸如批准,提议,存档等操作,并让那些只获得匹配的操作.

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

这两个中哪一个是正确的方式和/或我在轨道中丢失了什么?

Ere*_*bih 6

我绝对更喜欢params中变量集的选项.这种方式很干,添加新状态几乎是不费吹灰之力的.为了实现它,我将使用以下代码:

# routes.rb

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

# ProjectsController.rb

  def filter
    @projects = Project.where(:status => params[:filter])
  end
Run Code Online (Sandbox Code Playgroud)

这样,如果添加更多状态,您只需要在路径定义中进行过滤即可.

  • 你比我更好地阅读了这个问题,+ 1 (3认同)