如何将Rails路线转换为方法?

时间:2019-04-28 19:47:31

标签: ruby-on-rails routes

我需要在routes.rb文件中的多个位置定义相同的路线。我已经将其放置在my_routes方法中,但是我不喜欢直接在我的路由文件中使用方法。

执行此操作的正确方法是什么?

这是我目前的做法:

Rails.application.routes.draw do

  def my_routes
    get ":_controller" => "my_controller#index"
    ...
  end

  scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
    my_routes
  end

  my_routes
end

我意识到我可以在上面的示例中简单地将":locale"替换为(":locale"),以避免不得不两次引用my_routes,但这不是我要问的重点。我的问题是如何将路由定义转换为方法。

1 个答案:

答案 0 :(得分:0)

在这种情况下,我会考虑使用。 像这样:

concern :my_routes do
  get ":_controller" => "my_controller#index"
end

scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
  concerns :my_routes
end

concerns :my_routes