【问题标题】:CoffeeScript with ERB error带有 ERB 错误的 CoffeeScript
【发布时间】:2013-02-23 04:04:00
【问题描述】:

我正在尝试在手风琴中预先打开一个 div。我在相应的控制器中设置了一个实例变量@expanded_section。我正在尝试在 jQuery-UI 手风琴的 active 参数中使用该值,就像在 assets/javascripts 文件夹中的咖啡脚本文件上使用 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'))
  })

但我收到以下错误:

Error: Parse error on line 60: Unexpected ','

(在 /home/steve/dev/rails/Sur​​vey/app/assets/javascripts/surveyys.js.coffee.erb)

line 60active: &lt;%=@expanded_section%&gt;,

如果我对@expanded_section 进行to_i 调用,它会呈现active:0

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

请帮忙。

【问题讨论】:

    标签: jquery ruby-on-rails coffeescript erb


    【解决方案1】:

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

    $( ".sections" ).accordion({
      active: ,
    

    这是一个语法错误。

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

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

    然后你的资产脚本可以在window:

    $( ".sections" ).accordion({
      active: window.expanded_section,
    

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

    【讨论】:

    • haml中的window.expanded_section怎么做?
    • @stevanity:抱歉,不知道,不是 HAML 人。用谷歌搜索一下应该会有所帮助。
    • 好的 np :) 我使用了一个 javascript 过滤器。反正。在我的 js 文件中,我得到 window.expanded_section 就像这样:(
    • 你从哪里得到“window.expanded_section就像那样”?在 CoffeeScript 的编译版本中?这应该没问题,window.expanded_section 应该在 expanded_section 被分配(在 JavaScript 中)你想要的值之后在浏览器中解析。
    • 不,它出现在最终的 js 中 :( 好的。我放弃了这个解决方案,并将值呈现在 HTML 中的隐藏 div 中,然后从 coffeescript 访问该值。像这样:expanded_section=$('#expanded_section').html()' and then in the accordion call active :expanded_section,`。但是在最后的 js 中(不是我删除 erb 的咖啡),我变得活跃:expanded_section,就像那样!
    猜你喜欢
    • 2013-11-12
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 2012-02-20
    • 2013-08-13
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多