首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails资产-来自javascript css的url

rails资产-来自javascript css的url
EN

Stack Overflow用户
提问于 2014-11-03 11:12:03
回答 2查看 4.4K关注 0票数 2

我有一个外部javascript插件,有很多类似于这样的代码,其中的image属性是动态构建的。

代码语言:javascript
复制
$prod.append("<img class='fx_shadow' id='shd_" + i + "' + src='" + folderAssets + "/shadow_fx.png' />");

使用rails 4.1+,我将预编译此外部代码提供的相关映像和资产以及上面的引用。当然,图像无法在生产中加载,因为使用直接的src属性不能捕获经过消化和预编译的图像的指纹。

如何正确地从外部的asset_url javascript文件而不是css文件中调用方法(它使用摘要输出正确的资产文件名)?(这个javascript不是restful模板js.erb文件,而是清单中包含的js文件。)

另外,是否有一种优雅的方法来处理和重构这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-03 11:48:53

退房2.3.3 JavaScript/CoffeeScript and ERB。您需要将.js更改为.js.erb扩展,例如:.js.erb然后,您可以这样使用它:

代码语言:javascript
复制
$prod.append("<img class='fx_shadow' id='shd_" + i + "' + src='<%= asset_path('shadow_fx.png') %>' />");

或者:

代码语言:javascript
复制
var image = $("<%= image_tag 'shadow_fx.png', :class => 'fx_shadow' %>");
image.attr('id', 'shd_'+i);
$prod.append(image);

在第二个选项中,您必须将image_tag作为图像元素,然后向其添加id属性,因为i是JavaScript变量,这就是为什么必须将其添加到单独的行中。

票数 3
EN

Stack Overflow用户

发布于 2014-11-03 11:45:48

解决方案1

添加一个函数

代码语言:javascript
复制
function imagePath(image){
    return "http://" + window.location.host + "/assets/"+ image;
}

$prod.append("<img class='fx_shadow' id='shd_" + i + "' + src=imagePath(image) />");

解决方案2

将文件从js更改为js.erb

代码语言:javascript
复制
$prod.append("<img class='fx_shadow' id='shd_" + i + "' + src='<%= asset_path('shadow_fx.png') %>' />");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26713011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档