2010-05-20 77 views
4

我設置了facebooker來隧道我的Ruby on Rails應用程序。stylesheet_link_tag生成絕對鏈接而不是相對的

問題是我想在本地進行測試。也就是說,我不希望每次想看到我的更改時都必須啓動一個隧道。

現在,當我開始使用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

有誰知道它爲什麼這樣做,首先如何解決它?

在此先感謝。

回答

13

AssetTagHelper使用您的asset_host URL。我不知道是否facebooker被設置爲你(我不知道很多關於facebooker),但您可以在您的視圖重置沒有問題:

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" %> 

Walabing!

+2

最好把設置放到config/environments/development.rb – 2010-09-22 11:57:57

+0

+1根據上下文,你可以執行'ActionController :: Base.asset_host = root_url [0 ..- 2]'(' [0 ..- 2]'修剪尾部斜線) – zelanix 2014-08-04 20:57:16

相關問題