0

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

这就是我的配置设置routes.rb.

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

  1. 当 url 为http://example.com/sample时,它​​会很好地重定向。它Test采用控制器索引方法。

  2. 当 url 为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

我如何使用 Rails-2 应用程序(Rails 版本 2.3.9)做到这一点?

4

1 回答 1

1

首先,我不建议这样做。它违背了在 Rails 中如何完成事情的惯例,这往往会导致痛苦。

(至于我的建议?只是以不同的方式构建您的网址。如果您按照 rails 的简单方式做事,那么您会很开心地使用它。否则,您的生活将充满痛苦和折磨。)

但是,如果你真的想要,看起来你不能在 rails 中做正则表达式路由。我以为你可以,但我没有看到任何迹象表明你可以。然而,你能做的是……

def method_missing
  index
end

Put that in the controller you want to have this behavior. It'll do what you want, but it also might hide other errors. In any case, don't say I didn't warn you. This seems like a bad idea...

As for the redirect, a before_filter in the test controller will do that.

before_filter :redirect_if_wrong_path

def redirect_if_wrong_path
  if request.path =~ /\/sample/
    redirect_to request.path.sub('/sample', '/test')
  end
end
于 2012-12-31T07:23:10.097 回答