0

我已经开始在我的应用程序中使用 Rails 资产管道。它适用于样式表和 javascript,但我无法成功返回我的图像。我想我明白为什么,但我不知道如何解决它。

我的应用程序使用子域: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_tagwww寻找来源,或者我能否以某种方式使资产管道在默认情况下从所有子域中工作?

导轨 3.1.0 红宝石 1.9.2p0

4

1 回答 1

1

您可能希望在您的config/environments/production.rb(或您定义的任何其他环境)中设置资产的主机。

例如:

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

由于它接受 a 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。

虽然在我看来,我建议将所有资产放在每个资产服务器上,这样就不需要设置它。

于 2013-06-28T09:43:49.200 回答