发出混合jquery,rails和haml

我正在将html.erb转换为html.haml。 我在erb中有一些jquery是…

:javascript $(".level").live("click", function() { //..some code  milestone = "&milestone=";  //..some code }); 

我想将if语句转换为haml,为此我正在做…

 - if @milestone milestone = '&milestone="#{@milestone}"' 

但这不起作用,并给我一个语法错误“if @milestone”

我究竟做错了什么? 你能混合使用jquery和haml吗?

在里面:javascriptfilter(或任何filter)代码不被视为Haml,所以你不能使用像- if ... 但是,您可以在filter内使用#{...}插值。 在你的情况下你可以做类似的事情:

 :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 });