Rails 2中的URL重定向

时间:2012-12-31 07:16:11

标签: ruby-on-rails ruby

在我的rails应用程序中,出于某种原因,我必须将我的URL重定向到所需的URL。

这是我的配置设置routes.rb

的方式

map.connect 'sample/:action/:id.:format', :controller => 'test'

  1. 当网址为http://example.com/sample时,它会重定向。它是Test控制器索引方法。

  2. 当网址为http://example.com/sample/displayname?id=10时,会转到Test控制器并搜索displayname方法。显然它不存在,所以我得到了" undefined"错误消息。
    这里我想要即使URL是(http://example.com/sample/displayname?id=10),它也足以成为Test控制器的索引方法。

  3. 同样在地址栏中我想要URL屏蔽。如果我点击http://example.com/sample/,它应该重定向&在地址栏http://example.com/test

  4. 如何使用Rails-2应用程序(Rails版本2.3.9)?

1 个答案:

答案 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