如何在Rails 3.1中使用Javascript渲染图片

5
Rails 3.1现在要求您使用image_tag来使用资产管道呈现图像。
我已经将无限滚动功能集成到我的应用程序中,并将代码放入了js.coffee文件中。在加载更多产品时,我希望呈现旋转的加载gif。由于该文件不支持Rails代码,因此我无法在此处使用image_tag,但我已在此处编写了它,以便您了解我想要做什么。
jQuery ->
  if $('.pagination').length
    $(window).scroll ->
      url = $('.pagination .next_page').attr('href')
      if url && $(window).scrollTop() > $(document).height() - $(window).height() - 1200
        $('.pagination').html("<%= image_tag("loading.gif") %> Loading more...")
        $.getScript(url)
    $(window).scroll()

以前,我会纯粹地使用 HTML 编写,使用 <img src=... 但是这在资产管道中将不再起作用。我该如何实现这一点?

1个回答

5
使用纯HTML应该可以正常工作。
如果您的loading.gif在assets/images文件夹中,请尝试使用:<img src="/assets/loading.gif" />
更新于21/06/2012
根据Ruby on Rails Guide,第2.2.3节,将.js文件的文件扩展名更改为filename.js.erbfilename.js.coffee.erb将允许您在javascript中使用嵌入式ruby。
然后,您可以使用asset_path助手访问存储资产的路径。

1
如果我包含指纹部分,这样做在生产环境中才能起作用,对吗?它应该是类似于 <img src="/assets/loading-3ca5380af3c933ae32.gif" /> 的东西。 - tob88
嗯,说得好。我没有想到那个问题,因为我只是在我的开发环境中玩弄一些东西。我很快会去看看它。 - Zajn
我的意思是,我可以将 image_tag 放在视图中的 div 中,并设置 display:none,然后在 js 代码中加入 $('.paginationLoader').show()。但这似乎有些不必要,而且有点绕弯子,肯定有更好的方法。如果你能想出任何方法,我会很感兴趣的,谢谢! - tob88
4
根据文档,你应该可以从你的coffeescript文件中访问asset_path帮助程序。在这里查看第2.2.3节 - Zajn
我刚试了一下,最初它没有起作用。稍后回家时我会尝试一些调整,看起来很有前途。至少应该能帮助更好地知道要搜索哪些术语。非常感谢。 - tob88
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接