ActionController::Base.asset_host = Proc.new do |source, request|
"#{request.protocol}#{request.host_with_port}"
end
#This is also set the relative Path
ActionController::AbstractRequest.relative_url_root = "/other_url"
以上有两种方法可以让我们实现有根路由的事情。
那么究竟为什么需要有跟路由呢?
Web开发敏捷之道 写道
可能因为你供职于一个服务部门,需要为多个客户服务;也可能因为你希望同时运行应用程序的开发版本和生产版本,有时候你希望能运行同一个应用程序的多份拷贝。
这种时候,如果有可能的话,最简单的办法是在不同的子域名下分别运行一个应用程序实例。但如果做不到这一点,也可以在URL路径中加上一个前缀,以此区分不同的应用程序实例。
例如:
http://www.example.com/instanceOne/Controller/Action
http://www.example.com/instanceTwo/Controller/Action
其中的instanceOne,instanceTwo前缀代表不同的应用程序实例,之后才是应用程序的路由。
这种时候,如果有可能的话,最简单的办法是在不同的子域名下分别运行一个应用程序实例。但如果做不到这一点,也可以在URL路径中加上一个前缀,以此区分不同的应用程序实例。
例如:
http://www.example.com/instanceOne/Controller/Action
http://www.example.com/instanceTwo/Controller/Action
其中的instanceOne,instanceTwo前缀代表不同的应用程序实例,之后才是应用程序的路由。
第一种解决方案(具体解释):
http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html
第二种方法:
根据书中讲的(修改RAILS_RELATIVE_URL_ROOT)对于我使用的2.1.2不管用了,在网上找到的解决方案就是这个了,查看源代码基本没有怎么注释。