2013-06-28 40 views
0

我已經開始在我的應用程序中使用Rails資產管道。它非常適合樣式表和JavaScript,但我無法讓我的圖像成功返回。我想我明白爲什麼,但我不知道如何解決它。Rails資產管道與子域不檢索圖像

我的應用程序使用子域:bob.myapp.com/,mandy.myapp.com/等。當我在視圖中放置一個image_tag鏈接時,例如link_to image_tag('remove.png'...)它使用HTML屬性src="/assets/remove.png"呈現。但合理的是,這意味着瀏覽器的位置是:http://bob.myapp.com/assets/remove.png

如果我直接粘貼到我的地址欄中,它不會被找到。如果我將子域更改爲http://www.myapp.com/assets/remove.png(即將bob更改爲www),則圖像將成功檢索。

所以,我怎麼逼我image_tag尋求源從WWW或者我可以以某種方式使資產管道工作默認關閉所有子域的?

的Rails 3.1.0 紅寶石1.9.2p0

回答

1

您可能需要設置資產的主人在你config/environments/production.rb(或任何其他你定義的環境)。

例如:

MyApp::Application.configure do 
    config.action_controller.asset_host = "http://www.myapp.com" 
end 

因爲它接受一個Proc,你可以做一些計算有和資產設置不同的主機:

MyApp::Application.configure do 
    config.action_controller.asset_host = Proc.new do |source| 
    subdomain = compute_subdomain(source) 
    "http://#{subdomain}.myapp.com" 
    end 
end 

image_tag(source, options)助手將尊重和輸出完整的URL爲資產。

雖然在我的小見解中,我建議將所有資產放置在每個資產服務器上,這樣就不需要設置它。