我设置了 facebooker 来隧道我的 Ruby on Rails 应用程序。
问题是我想在本地测试。也就是说,我不想每次想看到我的更改时都必须启动隧道。
现在,当我使用 ruby script/server
(不预先调用 rake facebooker:tunnel:background_start
)启动应用程序时,助手创建的链接(例如 stylesheet_link_tag、javascript_include_tag、image_tag)会在我的 tunnlr 地址前面加上: http://web1.tunnlr.com:myPort/ 。 (例如,页面源代码中的 CSS 链接如下所示: http://web1.tunnlr.com:myPort//stylesheets/appName.css?1234567890 。)
我不想要那个功能;如果不先启动隧道,我就无法看到我的 CSS 或 JavaScript 更改。我希望链接是相对的,而不是绝对的。所以, stylesheet_link_tag
应该产生 /stylesheets/appName.css?1234567890
。
有谁知道它为什么首先这样做以及如何解决它?
提前致谢。
最佳答案
AssetTagHelper 使用您的 asset_host
URL。我不确定 facebooker
是否为您设置了它(我对 facebooker 了解不多),但是您可以在您的 View 中重新设置它,没问题:
在您的 stylesheet_link_tab
之前,只需覆盖主机 URL:
ActionController::Base.asset_host = "localhost:3000"
# or
ActionController::Base.asset_host = ""
所以使用 ERB 可能看起来像这样:
<% ActionController::Base.asset_host = "" %>
<%= stylesheet_link_tag "stylesheet.css" %>
哇!
关于ruby-on-rails - stylesheet_link_tag 生成绝对链接而不是相对链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2871304/