我有两个静态页面路由,我在控制器中捕获。
match "/pages/:page" => "pages#aboutus"
match "/pages/:page" => "pages#team"
我认为它可以通过匹配“aboutus”或“团队”来工作,但路由似乎只是通过寻找上面的第一个条目来工作。
我的控制器看起来像这样:
def aboutus
end
def team
end
知道如何让路线转到正确的控制器条目吗?
谢谢!
答案 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高压:
答案 2 :(得分:2)
对不起,这不行。您正尝试使用相同的网址前往两个不同的地方。要匹配的第一个参数是网址在浏览器中的显示方式,并且您已经为两条路线提供了完全相同的参数。
您需要以某种方式区分网址。
你真的想要这样做:
match "/pages/aboutus" => "pages#aboutus"
match "/pages/team" => "pages#team"