我有以下javascript(为了清晰起见缩短了):
$modal = $('<img src="/assets/loading.gif">');
$('body').append($modal);
但我不确定如何在该javascript中访问asset_host?有什么建议? (我试图不使用咖啡脚本)
答案 0 :(得分:1)
有几种选择:
如果您没有访问资产管道中的文件(因此可以使用ERB
代码),您可以使用:
$img = '<%=j image_tag asset_path("loading.gif)" %>'
$('body').append($img);
如果您要访问资产管道内部(您只能使用纯JS),则必须通过HTML将资产主机变量传递给JS。 Gon是一个很好的方法:
#config/initializers/gon.rb
gon.push({asset_host: ActionController::Base.asset_host})
#app/views/layouts/application.html.erb
<%= include_gon %>
#app/assets/javascripts/application.js
$modal = $('<img src="' + gon.asset_host + '/assets/loading.gif">');
$('body').append($modal);