【问题标题】:Using url_helpers in a coffeescript file with a base url in production在咖啡脚本文件中使用 url_helpers 和生产中的基本 url
【发布时间】:2012-07-06 20:56:06
【问题描述】:

我正在尝试在 coffescript 文件中使用 Rails url_helpers。我将 .erb 扩展名附加到文件名 (profile.js.coffee.erb) 并使用 ERB 访问帮助程序,如下所示:

jQuery ->
  window.Intl.Models.Profile = Backbone.Model.extend
    url: '<%= Intl::Application.routes.url_helpers.profile_path %>'

这在开发中非常有用,它会返回/profile。在生产中,我使用/intl 的 URL 根,所以我告诉资产预编译器在 deploy.rb 中考虑这一点

set :asset_env, "#{asset_env} RAILS_RELATIVE_URL_ROOT='/intl'"

但是,这似乎不会影响 url_helpers,因为它仍然会返回 /profile 而不是 /intl/profile

我尝试分别在 production.rb 和 development.rb 中设置 ENV["RAILS_RELATIVE_URL_ROOT"] ,但也没有用。

任何建议将不胜感激。谢谢。

【问题讨论】:

    标签: ruby-on-rails asset-pipeline ruby-on-rails-3.2 rails-routing


    【解决方案1】:

    您可能需要在机架级别进行设置。如果您使用Passenger,您可以设置RackBaseURI 指令。

    【讨论】:

    • 使用 Rack 和 Passenger 这样做的问题是 rake assets:precompile 对 Web 服务器配置一无所知......它作为 Rake 任务运行。 RackBaseURI 工作得很好,预编译资产不是
    【解决方案2】:

    同样的问题。 作为部分解决方案,我使用

    set :asset_env, "#{asset_env} RAILS_RELATIVE_URL_ROOT=/csc"
    

    在 deploy.rb 中用于 Capistrano 部署。这适用于资产预编译的所有其他方面,除了这个单一方面 (.coffee.erb) 似乎完全不受该设置的影响。

    【讨论】:

      猜你喜欢
      • 2014-10-20
      • 2013-07-27
      • 1970-01-01
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多