我有一个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...
答案 0 :(得分:1)
因此看起来rails将ejs
文件解释为ruby并且当它碰到javascript语法时会发出chokes。这是2条建议:
使用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
你可以在ruby中重写ejs
部分,除非你在javascript环境中的其他地方使用它。
答案 1 :(得分:0)
您可以重写条件以避免使用这样的括号:
<img src="<% sc_image ? sc_image : "/assets/arrow-head-260x260.png"%>"