我试图在页面上输出一些内联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行,它实际上是有效的。
正确的语法是:
- 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过滤器的对比。只要缩进两个空格,HAML就可以很好地处理多行。
然后在视图的另一部分:
= content_for(:javascript)
这叫做转义,在这种情况下,你转义,呃,缩进:
=content_for :javascript do
/ $(function(){
/ $("#sell_tickets_here").live("vclick",function(){
/ if($(this).is("checked"))
/ $("#tickets_here").display("inline");
/ else
/ $("#tickets_here").display("none");
/ });
/ });