【问题标题】:Issue mixing jquery, rails, and haml问题混合 jquery、rails 和 haml
【发布时间】:2013-05-06 22:15:11
【问题描述】:

我正在将 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不能混用吗?

【问题讨论】:

    标签: jquery ruby-on-rails 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
      });
    

    【讨论】:

      猜你喜欢
      • 2012-01-16
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多