Rails重定向路由坏主机组件

时间:2013-01-24 20:05:23

标签: ruby-on-rails routes

所以我正在尝试在我的routes.rb中进行重定向。当我离开我的域名时,我收到了一个错误。

match "/partners/" => redirect("/partners.html")

导航到/ partners /会出现此错误页面:

URI::InvalidComponentError

bad component(expected host component): frontend_rails.dev

但是,如果我将完整的域放在重定向中,它确实有效。

match "/partners/" => redirect("http://example.com/partners.html")

但对于我的开发服务器,我不喜欢链接转到我们的生产服务器。根据rails doc,这应该自动添加:

  

在所有这些情况下,如果您不提供主要主机(http://www.example.com),Rails将从当前请求中获取这些详细信息。

为什么它不喜欢我的相对重定向?谢谢!

1 个答案:

答案 0 :(得分:3)

差不多一年后,我终于意识到问题所在。它实际上是一个糟糕的URI。 GitHub中的回购称为frontend_rails。我使用了Pow服务器,它根据你的文件夹名称给你一个主机(当你检查项目默认为GitHub仓库的名称时),所以http://frontend_rails.dev

但是,技术上不允许在URI中使用下划线。这是对URI宝石的绊倒。我将我的项目frontend_rails符号链接到frontend-rails,现在它可以工作了。 Voilà!