如何删除嵌套在不同范围内的路由重复?

时间:2012-02-16 06:24:00

标签: ruby-on-rails ruby

我在命名空间和子域约束中有相同的路由。

首先用于生产,第二用于开发。如何删除这种重复?

constraints :subdomain => 'api' do
    scope :module => "api" do
      resources :users
      resources :orders
    end     
end

namespace :api do
    resources :users
    resources :orders
end    

1 个答案:

答案 0 :(得分:2)

好吧,do ... end会创建一个块。如果你有一个重复的块,你可以把它变成一个变量,把它转换成一个变量,把它传递给Proc.newproc(后者只是前者的捷径): / 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。