1

我有一个表格

<%= 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:意外的令牌:

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

4

1 回答 1

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 %>);

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

于 2013-10-26T12:32:09.727 回答