Jquery 带有ERB错误的CoffeeScript

Jquery 带有ERB错误的CoffeeScript,jquery,ruby-on-rails,coffeescript,erb,Jquery,Ruby On Rails,Coffeescript,Erb,我正试着用手风琴预先打开一个div。我正在相应的控制器中设置一个实例变量@expanded_section。我试图在jQueryUI的active参数中使用该值,就像在assets/javascripts文件夹中的coffeescript文件中使用erb一样 $( ".sections" ).accordion({ active: <%=@expanded_section%>, header: "h4", collapsible: true, heightStyle:

我正试着用手风琴预先打开一个div。我正在相应的控制器中设置一个实例变量
@expanded_section
。我试图在jQueryUI的
active
参数中使用该值,就像在
assets/javascripts
文件夹中的coffeescript文件中使用erb一样

$( ".sections" ).accordion({
  active: <%=@expanded_section%>,
  header: "h4",
  collapsible: true,
  heightStyle: "content"  }).sortable({
  axis: "y",
  handle: "h4",
  update: ->
    $.post($(this).data('update'), $(this).sortable('serialize'))
  })
(在/home/steve/dev/rails/Survey/app/assets/javascripts/surveyys.js.coffee.erb中)

第60行
处于活动状态:,

如果我在
@expanded\u部分调用
,它会使
处于活动状态:0

但是,当我从控制器向控制台打印
@expanded_section
的值时,它会打印正确的预期值


请提供帮助。

在控制器运行之前,将处理
资产/
下的所有内容。这意味着
@expanded_section
不会来自您的控制器,它将来自编译资产时的
self
,因此它与所有实例变量一样,将在首次访问时创建,并且将为
nil
。结果是CoffeeScript将看到以下内容:

$( ".sections" ).accordion({
  active: ,
这是一个语法错误

您可以做的一件简单的事情是在视图的HTML中设置一个全局JavaScript变量:

<script type="text/javascript">
  window.expanded_section = <%= @expanded_section %>;
</script>

您可能希望将其隐藏在自定义名称空间中,以避免与现有的
window
属性冲突,但总体结构将是相同的。那小小的
window.expanded_部分=…
,但如果它是每个页面的一部分,甚至可能会出现在您的布局中。

如何在haml中创建window.expanded_部分?@stevance:对不起,不知道,不是haml的人。谷歌搜索应该会有帮助。好的,我用了一个javascript过滤器。无论如何在我的js文件中,我得到了
window.expanded_section
就像这样:(你从哪里得到了“
window.expanded_section
就像那样”?在咖啡脚本的编译版本中?应该没问题,在
expanded_section
被分配后,
window.expanded_section
应该在浏览器中解析(在JavaScript中)您希望它具有的值。没有,它出现在最终的js中:(好的。我放弃了这个解决方案,在HTML中的一个隐藏div中呈现了该值,并从coffeescript中访问了该值。如下所示:
expanded_section=$(“#expanded_section”).HTML()“然后在手风琴呼叫中
active:expanded_部分,`。但是在最后的js中(不是咖啡,因为我删除了erb),我得到了active:expanded_部分,就像那样!
<script type="text/javascript">
  window.expanded_section = <%= @expanded_section %>;
</script>
$( ".sections" ).accordion({
  active: window.expanded_section,