我在命名空间和子域约束中有相同的路由。
首先用于生产,第二用于开发。如何删除这种重复?
constraints :subdomain => 'api' do
scope :module => "api" do
resources :users
resources :orders
end
end
namespace :api do
resources :users
resources :orders
end
答案 0 :(得分:2)
好吧,do ... end
会创建一个块。如果你有一个重复的块,你可以把它变成一个变量,把它转换成一个变量,把它传递给Proc.new
或proc
(后者只是前者的捷径): / p>
res = Proc.new do
resources :users
resources :orders
end
然后,您可以将Proc(res
)作为块参数传递给任何期望块的方法,方法是将其添加到&
:
constraints :subdomain => 'api' do
scope :module => 'api', &res
end
namespace :api, &res
Here's a great article在Ruby中使用块,Procs和lambdas。