我有一张表格
<%= 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:意外的令牌:
互联网上找到的其他解决方案对我没有帮助
答案 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 %>);
这将测试该行是否是问题。如果是的话,这意味着你将不得不稍微调整你的系统,但如果你回复结果,我们可以创建一个更好的答案