【问题标题】:Generate URL for file in /public in Rails 2 ERB view在 Rails 2 ERB 视图中为 /public 中的文件生成 URL
【发布时间】:2010-11-25 18:36:13
【问题描述】:

在我的 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 很尴尬)。

我应该能够做类似 的事情吗?

或'/myfile.kml'

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

【问题讨论】:

    标签: ruby-on-rails-2


    【解决方案1】:

    我不确定 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/

    【讨论】:

    【解决方案2】:
    '<%= ENV["RAILS_RELATIVE_URL_ROOT"] %>/myfile.kml'
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        rake routes 的检查揭示了在视图中使用的助手 root_path。例如&lt;%= root_path + 'myfile.kml' %&gt; 默认会映射到rails应用中public/下的文件。

        【讨论】:

          【解决方案5】:

          【讨论】:

          • 这给了我一个文件系统路径。我需要相对或绝对 URL。
          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-10
            • 2014-10-13
            • 2015-09-02
            • 1970-01-01
            • 2015-08-31
            • 1970-01-01
            相关资源
            最近更新 更多