我一直在尝试找到一种干净的方法来确定一个动作(在 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 %>