对于 JavaScript,使用 content_for 时 HAML 具有多行
我正在尝试在页面上输出一些内联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 行,那么这实际上是有效的。
I am trying to output some inline js on a page. I don't really want to add it to any JS file since it is so aribtrary and one time use. That being said, I am using haml and also trying to use content_for in order to place the JS after jquery is loaded from the layout.
The problem is that haml does not like multiline text that is indented (I think)
I am trying to do the following:
=content_for :javascript do
$(function(){
$("#sell_tickets_here").live("vclick",function(){
if($(this).is("checked"))
$("#tickets_here").display("inline");
else
$("#tickets_here").display("none");
});
});
In my layout I have:
= yield(:javascript)
Which actually works if I only have 1 line after the content_for statement.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正确的语法是:
注意破折号与等号和
:javascript
HAML 过滤器。只要缩进 2 个空格,HAML 就可以很好地处理多行。然后在你的观点的另一部分:
The correct syntax would be:
Notice the dash versus the equal sign and the
:javascript
HAML filter. HAML works just fine with multi-line as long as it is 2-space indented.And then in the other part of your view:
这称为转义,在这种情况下,您会转义,呃,缩进:
=content_for :javascript 做
/ $(函数(){
/ $("#sell_tickets_here").live("vclick",function(){
/ if($(this).is("选中"))
/ $("#tickets_here").display("内联");
/ 别的
/ $("#tickets_here").display("无");
/ });
/ });
This is called escaping, and in this case you escape, ergh, indentation:
=content_for :javascript do
/ $(function(){
/ $("#sell_tickets_here").live("vclick",function(){
/ if($(this).is("checked"))
/ $("#tickets_here").display("inline");
/ else
/ $("#tickets_here").display("none");
/ });
/ });