【发布时间】:2011-10-30 12:31:37
【问题描述】:
嘿,我有办法在haml中做到这一点吗?
:javascript
var Tab = <%= @tab %>
我可以添加一个助手,我猜是这样的:
<script>
var Tab = '<%= @tab %>'
</script>
但是使用 HAML 会很好!
【问题讨论】:
标签: javascript ruby-on-rails ruby haml
嘿,我有办法在haml中做到这一点吗?
:javascript
var Tab = <%= @tab %>
我可以添加一个助手,我猜是这样的:
<script>
var Tab = '<%= @tab %>'
</script>
但是使用 HAML 会很好!
【问题讨论】:
标签: javascript ruby-on-rails ruby haml
您可以使用字符串插值语法(#{...}):
:javascript
var tab = #{@tab}
不过,请注意正确转义。
【讨论】:
这是一种糟糕的代码结构方式。
内联 JavaScript 已经够糟糕了。内嵌 ERb 的内联 JavaScript 会让你直接下地狱。
JavaScript 应该在外部静态文件中。这样浏览器就可以缓存它们,你可以把 JavaScript 当作真正的编程语言来使用。
在你的情况下,我会推荐类似的东西:
(Haml 文件)
#tab= @tab
(CSS 文件)
#tab { display: none }
(Javascript 文件)
var Tab = $('#tab').innerHTML();
这样一来,一切都保持静态和可维护,并且您不会混合使用 JS 和 HTML。
【讨论】: