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

前端之家收集整理的这篇文章主要介绍了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,但是到目前为止,我无法做到这一点.

猜你在找的Ruby相关文章