Ruby on rails 如何简化这条铁路的路线

Ruby on rails 如何简化这条铁路的路线,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,所以我想手动路由到一个控制器函数,但对几个资源使用相同的方法 get "A/:id/f" => "a#f", :constraints=>lamba {|req| (something) } get "B/:id/f" => "b#f", :constraints=>lamba {|req| (something) } get "C/:id/f" => "c#f", :constraints=>lamba {|req| (something) } 有更简单的

所以我想手动路由到一个控制器函数,但对几个资源使用相同的方法

get "A/:id/f" => "a#f", :constraints=>lamba {|req| (something) }
get "B/:id/f" => "b#f", :constraints=>lamba {|req| (something) }
get "C/:id/f" => "c#f", :constraints=>lamba {|req| (something) }

有更简单的方法吗?

在app/constraints中创建一个如下所示的类

class SomeConstraint
  def matches?(request)
    # (something)
  end
end
并修改路线

constraints(SomeConstraint.new) do
  get "A/:id/f" => "a#f"
  get "B/:id/f" => "b#f"
  get "C/:id/f" => "c#f"
end

您需要观察的是以资源为中心的结构,以及的使用。具体来说,这将如何使您的路线更加干燥

您可以这样(简单地)实现您的结果:

--

为了使代码保持干爽,您可能希望使用以下关注点:

#config/routes.rb
concern :your_items do
   get :f, constraints: lamba {|req| (something) } 
end

resources :a, :b, :c, concerns: :your_items #-> this might have to be split into separate "resources" declarations

#config/routes.rb
concern :your_items do
   get :f, constraints: lamba {|req| (something) } 
end

resources :a, :b, :c, concerns: :your_items #-> this might have to be split into separate "resources" declarations