我正在将html.erb转换为html.haml。我在erb中有一些jquery是..
:javascript
$(".level").live("click", function() {
//..some code
<% if @milestone %>
milestone = "&milestone=<%= @milestone%>";
<% end %>
//..some code
});
我想将if语句转换为haml,为此我正在做..
- if @milestone
milestone = '&milestone="#{@milestone}"'
但这不起作用,并在“if @milestone”
上给出了语法错误我做错了什么?你能混合使用jquery和haml吗?
答案 0 :(得分:1)
在:javascript
过滤器(或任何过滤器)内部代码不会被视为Haml,因此您无法使用- if ...
之类的内容。但是,您可以在内部过滤器中使用#{...}
插值。在你的情况下,你可以做类似的事情:
:javascript
$(".level").live("click", function() {
//..some code
#{"milestone = \"&milestone=#{@milestone};\"" if @milestone}
//..some code
});
嵌套插值部分有点笨拙,因此您可能希望将其移动到辅助方法中,例如:
def add_milestone(milestone)
if milestone
"milestone = \"&milestone=#{milestone}\";"
else
""
end
然后你的Haml看起来像
:javascript
$(".level").live("click", function() {
//..some code
#{add_milestone(@milestone)}
//..some code
});