HAML在使用content_for时有多行,用于JavaScript

时间:2011-12-30 01:25:47

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

我正在尝试在页面上输出一些内联js。我真的不想将它添加到任何JS文件,因为它是如此aribtrary和一次使用。话虽这么说,我正在使用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行,那么哪个实际有效。

2 个答案:

答案 0 :(得分:16)

正确的语法是:

- 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)

答案 1 :(得分:0)

这叫做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"); / }); / });