如何在Rails routes.rb中有多个约束?

时间:2012-06-27 21:32:20

标签: ruby-on-rails ruby-on-rails-3

我想要一个考虑了2个约束的rails路由。如何才能做到这一点?两个约束

match ':id' => 'pages#temp', :constraints => { :uuid => /[A-Za-z\d]([-\w]{,498}[A-Za-z\d])?/ }
root :to => 'pages#temp', :constraints => lambda {|r| r.env["warden"].authenticate? }

如何在两个约束条件下都有这样的路线?感谢

match ':id' => 'pages#temp', :constraints =>

2 个答案:

答案 0 :(得分:1)

我猜你必须制作一个自定义约束类并将所有约束放在那里。有关详细信息,请参阅导轨指南中的高级约束(下面的链接)。

http://guides.rubyonrails.org/routing.html#advanced-constraints

答案 1 :(得分:0)

我必须对子域和用户名使用多个约束。我用一个方块来解决问题:

constraints subdomain: ['survey', 'survey.staging'] do
    match "/(:username)", to: "responses#index", constraints: { username: /[0-z\.\-\_]+/ }, :via => [:get, :post]
end

所以您可以尝试这样的事情:

constraints id: { uuid: /[A-Za-z\d]([-\w]{,498}[A-Za-z\d])?/ } do
  match '/:id' to: 'pages#temp', constraints: lambda {|r| r.env["warden"].authenticate? }
end