【发布时间】:2013-05-27 13:22:54
【问题描述】:
我一直在尝试找到一种干净的方法来确定某个操作(在 rails 控制器中)是适用于成员还是适用于集合。
例如当你在 routes.rb 中声明时
resources :projects
您会在“集合”上定义以下方法:
- 索引
- 创建
- 新
以下是关于“成员”的定义:
- 更新
- 显示
- 删除
我正在尝试找到一种方法来在视图中利用这种出色的模式,例如:
<% if @controller.action.applies_on_members? %>
<%= link_to :destroy, :method => "delete", :confirm => "RU Sure" %>
<%= link_to :show, "show" %>
<% end %>
同样,这在 before_filters 中也很有用
before_filter :find_project, :only_on_members => true
目前我必须做以下事情:
before_filter :find_project, :except => [:new, :create, :index, :export_all, :destroy_all, :archive_all]
这很烦人,我的想法是所有这些操作都有一个共同的行为:它们是在 collections 中定义的。
有没有人知道如何以干净的方式实现这一目标?
注意:我问这个问题的原因是因为我正在寻找在开发方面可扩展的东西,例如 before_filters 或某些部分的行为会自动被新的自定义操作继承。
谁从来不用写下类似的东西
<% unless ["new", "index", "some_other_action1", "some_other_action2", "some_other_action3", "some_other_action4"].include? @controller.action_name %>
<%= link_to "Destroy", :project, :method => :delete %>
<% end %>
【问题讨论】:
标签: ruby-on-rails ruby controller