如何将ejs文件导入haml?

时间:2014-04-01 16:18:31

标签: ruby-on-rails haml ejs

我有一个Rails应用程序,并希望将ejs文件导入到我现有的haml文件中

index.haml:

- str = controller.render_to_string file: "random.ejs", layout: false
= str.html_safe

ranodm.ejs(作品):

<div>Random</div>

ranodm.ejs(不工作):

<img src="<% if (sc_image) { %><%= sc_image %><% } else { %>/assets/arrow-head-260x260.png<% } %>">    

我收到以下错误:

Syntax error, unexpected '{', expecting keyword_then or ';' or '\n'
...('<img src="'); if (sc_image) { ;@output_buffer.append= ( sc...

2 个答案:

答案 0 :(得分:1)

因此看起来rails将ejs文件解释为ruby并且当它碰到javascript语法时会发出chokes。这是2条建议:

  1. 使用ruby-ejs gem使用javsccript将部分文本字符串呈现为文本字符串。

    EJS.evaluate("Hello <%= name %>", :name => "world")

    # => "Hello world"

    您只需加载文件即可将其内容传递给evaluate,而无需先尝试解析它。 File.open("app/views/controller_name/_my_awesome_template.html.ejs").read

  2. 你可以在ruby中重写ejs部分,除非你在javascript环境中的其他地方使用它。

答案 1 :(得分:0)

您可以重写条件以避免使用这样的括号:

<img src="<% sc_image ? sc_image : "/assets/arrow-head-260x260.png"%>"