2013-05-06 42 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