【问题标题】:SyntaxError - unterminated string meets end of fileSyntaxError - 未终止的字符串遇到文件结尾
【发布时间】:2018-10-15 18:25:41
【问题描述】:

此代码适用于咖啡脚本中的 rails 应用程序

$(".batch").empty().append("<%= escape_javascript('<option>App</option>').html_safe %>")

但是当我运行下面的代码时会出错

$(".batch").empty().append("<%= escape_javascript('<option value="<%= batch.id %>"><%= batch.rkbatchno.titleize %></option>').html_safe %>")

我在运行应用程序时遇到错误

SyntaxError - 未终止的字符串遇到文件结尾

语法错误,意外的输入结束,期待')'

在文件中

update_batches.js.coffee:6:in `'

【问题讨论】:

    标签: ruby-on-rails ruby coffeescript


    【解决方案1】:

    您不需要嵌入 html,因此您可以尝试这样:

    <% @batches.each do |client| %>
      $(".batch").append("<option value='<%= j batch.id %>'><%= j batch.rkbatchno.titleize %></option>")
    <% end %>
    

    编辑:我根据你的 cmets 更改我的答案。如果您只想遍历@batches 来填充您的选项选择(根据我对您问题的理解),则不需要另一个部分

    【讨论】:

    • 你是如何定义batch的?也许您可以使用控制器中的@batch
    • $(".batch").empty().append("") 使用这个给出错误:NoMethodError - #<:activerecord_relation:0x00007f74558f6788>: 的未定义方法 `rkbatchno'
    • @RajnishSingh 我猜你想要实现的是在@batches 中附加每个batch 作为选择选项。如果是这样,只需将您的代码包装在 each 循环中
    • 正如我用另一种方法解决我的错误的回答一样。我不想使用 render(:partial => @batches) 而是希望我的代码在一个文件中
    • 我真的不明白你现在想要达到什么目的。如果您遇到新问题,可以更新您的问题以获得更清晰的信息。
    【解决方案2】:

    您需要在 append 函数中转义双引号并在 ERB 中使用字符串插值:

    $(".batch").empty().append("<%= escape_javascript('<option value=\"#{batch.id}\">#{batch.rkbatchno.titleize}</option>').html_safe %>")
    

    【讨论】:

    • 代码运行没有错误,但我没有得到 {batch.id} 的值,并且我认为 {batch.rkbatchno.titleize} rails 代码不会执行。 Rails 代码仅在使用 语法时才有效
    猜你喜欢
    • 2012-03-17
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多