Angular + .nghaml模板:引用预编译的图像资源

时间:2014-07-29 05:43:29

标签: ruby-on-rails angularjs

我使用.nghaml作为我的模板,并使用以下宝石进行Angular集成:

gem 'angularjs-rails'
gem 'angular-rails-templates'

My Rail视图布局是name.html.haml,并且在其中使用image_tag可以正常工作。在制作时我可以看到图像。

相比之下,在我的Angular模板(资产/模板)及其.nghaml扩展名中,我无法使用Rails helper image_tag并且直接引用不起作用

%image(src="assets/sample_image.png")

直接引用在本地工作,但在生产图像上不能渲染。

此人(Rails Image assets in Angular Directive and template)有类似问题,但使用

%img(ng-src='assets/sample_image.png') 

在当地工作但不在生产中。并且尝试使用image-url会导致未定义方法的错误(就像image_tag一样),因为没有任何Rails助手似乎在.nghaml扩展名中工作。

正在运行的图像(带有image_tag帮助程序的Rails视图)引用了预编译资产,这些资产的名称随着md5-hash的添加而改变(基于第一个链接文章),但我遇到了问题弄清楚如何在没有Rails辅助方法的情况下告诉nghaml模板调用新的预编译资产。

我几个月前遇到过帮助者这个问题(Rails App to Angular: HAML + Rails Helpers)并没有找到解决方案,但最近才需要将图像放到nghaml模板中而不是仅仅用CSS创建我需要的东西。

我目前正计划将角度模板移回erb,如果我无法解决这个问题,但如果有其他选择(或解决方案),我不知道,我&# 39;我喜欢听他们。

2 个答案:

答案 0 :(得分:2)

帖子Rails App to Angular: HAML + Rails Helpers中提出的解决方案将允许您在生成客户端html文件时在haml文件中使用帮助程序(包括image_tag帮助程序)。

答案 1 :(得分:0)

一个问题:根据angular-rails-template库的官方回购,the .nghaml extension is no longer supported。您必须将其重命名为.haml

更大的问题是你使用Rails来提供单页JS应用程序。没有必要,您可以使用nginx或Apache为站点提供服务并控制缓存并在那里执行缓存(nginx & apache cache busting tutorial

如果你正在使用Rails作为REST API,它应该从你的前端AngularJS应用程序中解除耦合。

如果你试图在缓存清除之外的模板中做一些奇特的东西,你应该用JS和纯HTML做。奇怪而奇怪,但与Rails和Django以及服务器端MVC框架相比,AngularJS和其他前端MVC / MVVM框架是不同的野兽。