7

在我的 rails (v2.3.8) 应用程序中,我有一个静态资源文件,我放在 /public/myfile.kml 不需要任何特殊的 routes.rb 设置对吗?

它在http://localhost:3000/myfile.kml 上运行得很好

当我部署(给乘客)时,它出现在http://myserver/myappname/myfile.kml

到目前为止一切都很好...

我有一个视图(一个 erb 文件),它会喷出需要引用此文件的 javascript。输出需要在 localhost 上是“/myfile.kml”,在生产中需要是“/myappname/myfile.kml”,或者可能是上面的完整 URL,或者可能是涉及一些“../../”的相对 URL ../'(对于 RESTful URL 来说很尴尬)。

我应该能够做类似 <%=url_for 'myfile.kml'%> 的事情吗?

或 '<%=ROOT_URL%>/myfile.kml'

我知道这个问题有一个非常简单的答案,但老实说我没有找到它。很多人在谈论“root_url”,但那是什么?我可以在视图中引用的变量?它是未定义的。

4

6 回答 6

2

我不确定 Rails 2.3.8,但在 Rails 3 中,此值默认为 false。

编辑config/environments/production.rb和设置:

config.serve_static_assets = true

此外,这是一篇博客文章,显示了链接到静态资源(favicon)的帮助程序 http://ilconnettivo.wordpress.com/2008/07/28/favicon-on-rails/

于 2010-11-25T18:41:23.923 回答
2
'<%= ENV["RAILS_RELATIVE_URL_ROOT"] %>/myfile.kml'
于 2010-11-25T19:23:08.167 回答
2

<%= RAILS_ROOT + "/public/myfile.kml" %>

于 2010-11-25T20:34:33.490 回答
1

检查rake routes显示了在视图中使用的助手root_path。例如<%= root_path + 'myfile.kml' %>,默认情况下将映射到 rails 应用程序中 public/ 下的文件。

于 2013-09-24T22:35:46.220 回答
0

最新的(>2.3.6)是 Rails.root,见:http: //joneslee85.wordpress.com/2010/05/27/the-dilemma-of-rails-root-vs-rails_root-complex/

于 2010-11-25T18:43:38.920 回答
0

为什么不直接在本地复制您的生产环境?网络服务器不是很消耗资源,它可以帮助解决一些生态系统配置问题,就像您在此处看到的那样。

于 2010-11-26T05:40:43.813 回答