rails3中的匹配路由仅适用于第一条路由

时间:2011-05-25 17:37:10

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

我有两个静态页面路由,我在控制器中捕获。

  match "/pages/:page" => "pages#aboutus"
  match "/pages/:page" => "pages#team"

我认为它可以通过匹配“aboutus”或“团队”来工作,但路由似乎只是通过寻找上面的第一个条目来工作。

我的控制器看起来像这样:

  def aboutus
  end  

  def team
  end

知道如何让路线转到正确的控制器条目吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

它不能像那样工作。

您撰写的内容意味着请求会以pages段落中aboutus的{​​{1}}行动方式发送给{ :page }控制器:page。那应该是你的/pages/aboutus

此外,阅读the routing guide

如果您希望pages#aboutus重定向到/pages/team/pages#team重定向到match "/pages/aboutus" => "pages#aboutus" match "/pages/team" => "pages#team" ,请执行以下操作:

{{1}}

答案 1 :(得分:2)

匹配符合名称/值对中的名称。你可以这样做:

match "/pages/about-us" => "pages#aboutus"
match "/pages/team" => "pages#team"

如果您正在寻找处理静态页面的全局解决方案,我建议使用thinkbot高压:

https://github.com/thoughtbot/high_voltage

答案 2 :(得分:2)

对不起,这不行。您正尝试使用相同的网址前往两个不同的地方。要匹配的第一个参数是网址在浏览器中的显示方式,并且您已经为两条路线提供了完全相同的参数。

您需要以某种方式区分网址。

你真的想要这样做:

match "/pages/aboutus" => "pages#aboutus"
match "/pages/team" => "pages#team"