Rails3 - 提取路由中的常见操作

bmi*_*lac 2 ruby-on-rails ruby-on-rails-3

拥有大量共享常见自定义操作的资源,即:导入和导出:

  resources :users do
    collection do
      post "import"
      get "export"
    end
  end
  resources :companies do
    collection do
      post "import"
      get "export"
    end
  end
Run Code Online (Sandbox Code Playgroud)

有没有办法提取重复代码并重用它?在之前的Rails中,我认为可以通过以下方式实现:

  imp_exp_collection = {:import => :post, :export => :get}
  resources :users, :collection => imp_exp_collection
  resources :companies, :collection => imp_exp_collection
Run Code Online (Sandbox Code Playgroud)

Nar*_*iya 9

你可以在路由文件中定义一个方法,并可以调用它们

def imp_exp_collection
  collection  do
    post "import"
    get "export"
  end
end
Run Code Online (Sandbox Code Playgroud)

并按如下方式使用它

  resources :users do
   imp_exp_collection
  end
Run Code Online (Sandbox Code Playgroud)