【问题标题】:How to redirect a nested resource in routes.rb in Rails 3如何在 Rails 3 的 routes.rb 中重定向嵌套资源
【发布时间】:2013-06-17 17:28:36
【问题描述】:

我想将 http://mysite.com/docs/some-old-link 重定向到 http://mysite.com/docs/some-new-link em>(一些旧链接不见了)。这是我正在尝试的:

resources :docs, :only => [:index, :show] do
  member do
    match "some-old-link"   => redirect("some-new-link")
  end
end

但是重定向没有发生,我只是在某个旧链接上得到 404。尝试了各种调整,但无法得到它。我该怎么做?

【问题讨论】:

  • 您是否尝试过打印到控制台正上方的 member do,然后正上方的 match "some-old-link" => redirect("some-new-link"),以确保它被调用?
  • 如何匹配 "docs/some-old-link" => redirect("docs/some-new-link")
  • @Max OK 刚刚尝试过,并且两者都在 rails 启动期间打印,而不是在发出请求时打印(我猜 routes.rb 在启动时只运行一次以初始化路由)。

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


【解决方案1】:

首先,尝试将“to”添加到您的代码中:

match "some-old-link",  to: redirect("some-new-link")

问题也可能是:

 member do
    match "some-old-link"   => redirect("some-new-link")
  end

预计会这样重定向:

/docs/id/some-old-link/docs/id/some-new-link em>

尝试使用 collection 而不是 member

【讨论】:

  • 谢谢!使用集合而不是成员 - 这给了我错误:ERROR URI::InvalidURIError: the scheme http does not accept registry part: localhost:3000some-new-link。但是redirect("/docs/some-new-link") 可以解决问题。
猜你喜欢
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
相关资源
最近更新 更多