Rails远程表单throws语法错误:意外的令牌:

时间:2013-10-26 09:33:32

标签: javascript ruby-on-rails ajax

我有一张表格

<%= form_for([@group, lesson], remote: true) do |f| %>
            <tr id='<%= lesson.id%>' >
                <td><%= f.text_field :time %></td>
                <td><%= f.text_field :day %></td>
                <td><%= f.text_field :subject %></td>
                <td><%= f.text_field :teacher %></td>
                <td><%= f.text_field :room %></td>
                <td><%= f.submit 'Update'%></td>
                <td><%= link_to 'Delete', [lesson.group, lesson], remote: true,method: :delete%></td>
            </tr>
        <%end%>

控制器

def update

@lesson = @group.lessons.find(params[:id])

@lesson.update_attributes(params[:lesson])

respond_to do |format|
    if @lesson
        format.html { redirect_to edit_group_path(@group), notice: 'Succesfully updated lesson' }
        format.js { render :json => @lesson, location: edit_group_path(@group) }
        format.json { render json: @lesson}
    else
        format.html { redirect_to edit_group_path(@group), notice:'Error!' }
        format.json { render json: @lesson }
    end
end
end

和JS

$(document).ready ->
    $('#new_lesson').on("ajax:success", (e, data, status, xhr) ->
        $('.notice').append data
        ).bind "ajax:error", (e, xhr, status, error) ->
            $('.notice').append '<p>ERROR:'+error+'</p>'

    $(".edit_lesson").on("ajax:success", (e, data, status, xhr) ->
        $('.notice').append data
        ).bind "ajax:error", (e, xhr, status, error) ->
            $('.notice').append '<p>ERROR:'+error+'</p>'

请求正常,单击按钮时条目会更新。但它总是将语法错误抛入'.notice':

  

SyntaxError:意外的令牌:

互联网上找到的其他解决方案对我没有帮助

1 个答案:

答案 0 :(得分:3)

虽然我们确实需要查看有关错误的更多信息(哪个文件以及调用它的函数),但控制器中的这一行可能存在问题:

format.js { render :json => @lesson, location: edit_group_path(@group) }

首先,为什么要将JSON传递给JS请求?如果要返回JSON数据,通常使用数据类型作为JSON。如果您已将JSON用作API或其他内容,我们将不得不查看

就个人而言,我会测试这一行:

format.js 

然后在update.js.erb我会用这个:

alert(<%=j @lesson %>);

这将测试该行是否是问题。如果是的话,这意味着你将不得不稍微调整你的系统,但如果你回复结果,我们可以创建一个更好的答案