在我正在开发的项目中,我想为多个资源添加相同的路径。我知道我可以做到这一点
resources :one do
collection do
post 'common_action'
end
end
resources :two do
collection do
post 'common_action'
end
end
我至少有10种不同的资源都需要相同的路径,因为每个控制器都有相同的动作。有没有办法更少重复地定义它?
答案 0 :(得分:6)
更好的方式和支持rails 3.2
require 'action_dispatch/routing/mapper'
module ActionDispatch::Routing::Mapper::Resources
alias_method :resources_without_search, :resources
def resources(*args, &block)
resources_without_search *args do
collection do
match :search, action: "index"
end
yield if block_given?
end
end
end
答案 1 :(得分:2)
您可以扩展路由类:
class ActionDispatch::Routing
def extended_resources *args
resources *args do
collection do
post 'common_action'
end
end
end
end
...::Application.routes.draw do
extended_resources :one
extended_resources :two
end
或者,您甚至可以重新定义resources
方法本身。
注意:我不确定ActionDispatch :: Routing是否是正确的类名。
答案 2 :(得分:1)
%w(one two three four etc).each do |r| resources r do collection do post 'common_action' end end end