我正在尝试在页面上输出一些内联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行,那么哪个实际有效。
答案 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");
/ });
/ });