【问题标题】:HAML Having Multiple Lines While Using content_for, for JavaScriptHAML 在使用 content_for 时具有多行,用于 JavaScript
【发布时间】:2011-12-30 01:25:47
【问题描述】:

我正在尝试在页面上输出一些内联 js。我真的不想将它添加到任何 JS 文件中,因为它是如此随意且一次性使用。话虽如此,我正在使用 haml 并且还尝试使用 content_for 以便在从布局加载 jquery 后放置 JS。

问题是haml不喜欢缩进的多行文本(我认为)

我正在尝试执行以下操作:

=content_for :javascript do
  $(function(){
    $("#sell_tickets_here").live("vclick",function(){
      if($(this).is("checked"))
        $("#tickets_here").display("inline");
      else
        $("#tickets_here").display("none");
    });
  });

在我的布局中,我有:

  = yield(:javascript)

如果我在 content_for 语句之后只有 1 行,这实际上有效。

【问题讨论】:

    标签: javascript ruby-on-rails haml content-for


    【解决方案1】:

    正确的语法是:

    - content_for :javascript do
      :javascript
        $(function(){
          $("#sell_tickets_here").live("vclick",function(){
            if($(this).is("checked"))
              $("#tickets_here").display("inline");
            else
              $("#tickets_here").display("none");
          }); 
        });
    

    注意破折号与等号和:javascript HAML filter。只要 HAML 缩进 2 个空格,它就可以很好地处理多行。

    然后在你视图的另一部分:

    = content_for(:javascript)
    

    【讨论】:

    • 感谢这工作。唯一需要注意的是,如果您有来自多个页面的 javascript 内容,它将为每个页面放入一个脚本标记。 haml :javascript 将
    【解决方案2】:

    这被称为escaping,在这种情况下你转义,呃,缩进:

    =content_for :javascript do / $(function(){ / $("#sell_tickets_here").live("vclick",function(){ / if($(this).is("checked")) / $("#tickets_here").display("inline"); / else / $("#tickets_here").display("none"); / }); / });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多