【问题标题】:Generate full url to javascript in rails (similar to javascript_path, but url)在 rails 中生成 javascript 的完整 url(类似于 javascript_path,但 url)
【发布时间】:2010-12-28 17:41:52
【问题描述】:

如何生成指向 javascript 文件的绝对链接。

我认为应该有类似下面的东西(不幸的是,它似乎不可用):

javascript_url 'main' # -> 'http://localhost:3000/javascripts/main.js'

代替:

javascript_path 'main' # -> '/javascripts/main.js'

我需要绝对 URL,因为该 javascript 文件将在书签中使用。
此外,我需要相同的 css 文件。

谢谢,
德米特里。

【问题讨论】:

    标签: ruby-on-rails ruby url helpers


    【解决方案1】:

    也许您可以简单地将javascript_pathroot_url 结合使用?

    例如:

    root_url + javascript_path("main") 
    

    root_url 由您的根路由自动生成。

    您还可以通过在环境的配置文件中设置 ActionController::Base.asset_host 来配置 Rails 帮助程序以使用特定的“基本路径”。在documentation 中阅读更多内容。

    【讨论】:

    • root_url 以斜线结尾,havascript_path 以斜线开头。所以我最终在路径中有双斜杠。应该存在更好的方法。
    • root_url 不好的另一个原因是我无法将资产移动到不同的服务器,因为 toot_url 总是指向当前请求的主机。
    • 你尝试我的第二个建议了吗?
    • asset_host 只影响资产。它不影响路由 url(root_url 由路由模块生成)。所以不确定你到底建议什么。
    • 我的印象是asset_host会将指定的URL添加到javascript_path返回的内容中。
    【解决方案2】:

    我写了这个小助手来做这个:

    def absolute_javascript_url(source)
      uri = URI.parse(root_url)
      uri.merge(javascript_path(source))
    end
    

    关键部分是URI.merge,它将自动正确地将相关的javascript_path与root_url合并。

    【讨论】:

      【解决方案3】:

      JavaScript 和 css 文件的绝对 URL 现在可以通过 Asset Pipeline 在 Rails 4 的 ActionView::Helpers::AssetUrlHelper 模块中使用。在您的情况下,具体是 javascript_url and its alias url_to_javascript 和样式表的相应方法。

      结果与您在问题中提到的完全一样:

      javascript_url 'main' # -> 'http://localhost:3000/javascripts/main.js'
      

      虽然这个问题是很久以前提出的,但希望它对将来寻求相同问题答案的人有所帮助。

      【讨论】:

      • 很高兴知道!谢谢!我现在将更改接受的答案。
      猜你喜欢
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 2020-06-04
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多