【问题标题】:Access Rails 4 Fingerprinted Image Asset from Javascript Variable Image Name从 Javascript 变量图像名称访问 Rails 4 指纹图像资产
【发布时间】:2014-04-20 23:48:52
【问题描述】:

在 Heroku 上使用 Rails 4,预编译资产并添加指纹。

我可以使用以下方法从我的 erb 文件中访问资产:

<%= asset-url("image_name.jpg") %>

但是,我正在对控制器进行 ajax 调用以获取对象列表,并从每个对象构建图像名称,例如image-1.jpg、image-2.jpg,这里的数字来自 javascript 变量。这些图像位于 assets/images 目录中。

如何使用 javascript 变量链接到它们,如下所示:

<%= asset-url("image-javascriptVariable.jpg") %>

这显然行不通,因为它早在客户端渲染 javascript 变量之前就在服务器上渲染了。

注意:我知道我不能简单地对这些图像进行预处理/指纹识别并将它们放在公共/资产中并以静态方式提供它们。但是,我想使用指纹来打破更新缓存。

【问题讨论】:

标签: javascript ruby-on-rails heroku ruby-on-rails-4 asset-pipeline


【解决方案1】:

您不能:erb/haml 的插值在渲染视图之前运行(此处为 JavaScript)。

您应该在 ruby​​ 中驱逐您的逻辑,以便动态地为不同的资产文件提供服务。

【讨论】:

  • 接受这个作为答案,它激励我更正确地思考 Rails。我现在在我的控制器/json 输出中渲染asset_path,并将其作为 JSON 值发送到 ajax 请求。谢谢。
【解决方案2】:

如果图像数量合理,您可以使用 ERB 在 Javascript(例如字典)中构建所有图像的数据结构,然后选择正确的图像名称。

【讨论】:

  • 图片数
猜你喜欢
  • 1970-01-01
  • 2014-03-14
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
相关资源
最近更新 更多