CoffeeScript - 无与伦比的外观

KoU*_*rch 3 javascript ruby-on-rails coffeescript

我一直在尝试将我的工作javascript代码传递给CoffeeScript,但我无法传递此错误:

第55行无与伦比的OUTDENT

这是coffeescript代码

$(document).on("click",".save_button", ->
    $form = $(this).parent().parent().parent().parent().parent().parent()
    $form.bind("ajax:complete", ->
                $actionURI = $form.attr("action");
        $.get(window.location.protocol+"//"+window.location.host+$actionURI+".js",(data) ->
                    $form.parent().parent().prev().html(data); //Line 55
                    closeSaveElement()
        ,"html")
    );
    $form.submit();   
    return false;
);
Run Code Online (Sandbox Code Playgroud)

我已经尝试过放置和擦除;,但我没有错.我也尝试改变->,=>但弹出同样的错误.

Ble*_*der 6

有效的JS并不是真正有效的CoffeeScript.你必须做这样的事情:

$(document).on "click", ".save_button", ->
    $form = $(this).parent().parent().parent().parent().parent().parent()

    $form.bind "ajax:complete", ->
        $actionURI = $form.attr "action"
        $.ajax
            type: "get"
            url: "#{window.location.protocol}//#{window.location.host}#{$actionURI}.js"
            dataType: "html"
            success: ->
                $form.parent().parent().prev().html(data)
                closeSaveElement()

    $form.submit()

    return false
Run Code Online (Sandbox Code Playgroud)

另外,对此行做一些事情:

$form = $(this).parent().parent().parent().parent().parent().parent()
Run Code Online (Sandbox Code Playgroud)

.closest() 应该有帮助.

  • 那么空白对于coffeescript也很重要.它表示函数的开始和结束,哈希块等等.所以你缩进`$ actionURI = $ form.attr("action")` - 这可能会导致问题(更不用说分号)了. (2认同)