2013-05-06 58 views
0

我将html.erb转换为html.haml。我在ERB这是一些jQuery的..混合jquery,rails和haml的问题

: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吗?

回答

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 
    }); 
+0

工作就像一个魅力!感谢@matt – absolutskyy 2013-05-06 23:34:19