发出混合jquery,rails和haml

时间:2013-05-06 22:15:11

标签: jquery ruby-on-rails haml

我正在将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吗?

1 个答案:

答案 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
  });