ruby-on-rails – 具有骨干轨的Rails:资源助手(image_path)在EJS文件中

我有一个使用 codebrew/backbone-rails的Rails 3.1应用程序.在.jst.ejs模板中,我想包括一个图像,像这样:
<img src="<%= image_path("foo.png") %>"/>

但是,资源帮助者当然不可用JavaScript.

链接ERB(.jst.ejs.erb)不起作用,因为EJS语法与ERB冲突.

这是我所知道的:

>资产助手在浏览器中不可用,所以我需要在服务器端运行它们.
>我可以通过使服务器将各种资源路径转换成HTML(通过数据属性或< script>和JSON)并在JS中读取它们来解决这个问题,但是这似乎是相当的笨拙.

有没有办法在EJS文件中使用资产助手?

解决方法

实际上,有一种方法来链接.jst.ejs.erb文件,尽管它是相当无证的,我只是通过查看EJS测试用例来找到它.您可以告诉EJS使用{{}}(或[%%]或任何您想要的)而不是<%%>,然后ERB将不会尝试评估您的EJS调用.

确保在你的代码中需要EJS(我刚刚在我的Gemfile中包含gem’ejs’),然后创建一个初始化器(我称之为ejs.rb),包括以下内容:

EJS.evaluation_pattern    = /\{\{([\s\S]+?)\}\}/
EJS.interpolation_pattern = /\{\{=([\s\S]+?)\}\}/

然后,请确保将您的模板重命名为.jst.ejs.erb,并替换现有的<%%>使用{{}}的EJS解释代码.如果要使用除{{}}之外的其他东西,请更改初始化程序中的正则表达式.

我希望在Sprockets中有一个选项来通过配置来处理这个,而不是明确地包含EJS,但是到目前为止,我无法做到这一点.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...