【问题标题】:How to redirect in routes.rb for root?如何在 routes.rb 中为 root 重定向?
【发布时间】:2011-08-09 16:28:40
【问题描述】:

我的路线文件底部有以下内容:

root :to => 'threads#index', :constraints => lambda {|r| r.env["warden"].authenticate? }

问题在于 url 只是 /,而不是 /threads

如何让上述内容重定向到threads#index或/threads?

谢谢

【问题讨论】:

  • 我认为您只需要线程的默认行为,在这种情况下,您可以将 resources :threadsmatch '/threads' => 'threads#index' 添加到您的 Rakefile。除非您的意思是您希望站点的根 URL 为 /threads?在这种情况下,您可以将config.action_controller.relative_url_root = '/threads' 添加到您的配置文件中。
  • @Ankit Soni:为什么不写一个答案(格式正确)而不是评论?

标签: ruby-on-rails ruby-on-rails-3 url-routing


【解决方案1】:

如果我正确理解您的问题,您只需将站点根目录的 URL 从 http://....com/ 更改为 http://....com/threads

在这种情况下,您只需添加以下行:

config.action_controller.relative_url_root = '/threads'

到任何标准配置文件,例如 config/application.rbconfig/development.rbconfig/production.rb,具体取决于您的应用是处于生产模式还是开发模式。

在 rails 指南上有更多相关信息:here

编辑:

上面的解决方案似乎行不通。这是我自己尝试过的一个。您可以简单地将所有预先存在的路由包装在一个范围内,在您的routes.rb 文件中。即:

scope "/threads" do
  ..All your preexisting routes inside this..
end

请注意,这会将 /threads 添加到您应用中的每个路径之前。如果您只希望 root 发生这种情况,请确保只有 root :to => ... 行包含在范围内。

下面是作用域的简单解释:here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2016-06-28
    • 2013-06-17
    • 2013-10-08
    • 2011-05-31
    • 2011-09-09
    • 1970-01-01
    • 2012-12-11
    相关资源
    最近更新 更多