在我的rails应用程序中,出于某种原因,我必须将我的URL重定向到所需的URL。
这是我的配置设置routes.rb
。
map.connect 'sample/:action/:id.:format', :controller => 'test'
当网址为http://example.com/sample时,它会重定向。它是Test
控制器索引方法。
当网址为http://example.com/sample/displayname?id=10时,会转到Test
控制器并搜索displayname
方法。显然它不存在,所以我得到了" undefined
"错误消息。
这里我想要即使URL是(http://example.com/sample/displayname?id=10),它也足以成为Test
控制器的索引方法。
同样在地址栏中我想要URL屏蔽。如果我点击http://example.com/sample/,它应该重定向&在地址栏http://example.com/test。
如何使用Rails-2应用程序(Rails版本2.3.9)?
答案 0 :(得分:1)
首先,我不建议这样做。它违背了关于如何在轨道中完成任务的惯例,这往往会导致痛苦。
(至于我的建议是什么?只是以不同的方式构建你的网址。如果你按照rails的方式做事,那么你就可以玩得很开心。否则,你的生活会充满痛苦和痛苦。)< / p>
但是,如果你真的想要,看起来你不能在rails中做正则表达式路由。我以为你可以,但我没有看到你能做到的迹象。但是,你可以做的是......
def method_missing
index
end
将它放在您想要具有此行为的控制器中。它会做你想要的,但也可能隐藏其他错误。无论如何,不要说我没有警告你。这似乎是一个坏主意......
对于重定向,测试控制器中的before_filter
会这样做。
before_filter :redirect_if_wrong_path
def redirect_if_wrong_path
if request.path =~ /\/sample/
redirect_to request.path.sub('/sample', '/test')
end
end