我有一个jQuery脚本,如下所示:
$.ajax({
url: "/books/"+ mId,
type: 'PUT',
dataType: 'json',
data: { book: { description: bValue } },
}).done(function() {
alert("DONE!");
});
在我的路线中,我有resources :books
在我的图书管理员中,我有以下内容:
def update
@book = Book.find params[:id]
respond_to do |format|
if @book.update(book_params)
format.json { render status: 200 }
else
format.json { render status: :unprocessable_entity }
end
end
end
但由于某种原因,我收到以下错误:
ActionView::MissingTemplate (Missing template books/update, application/update with {:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}.
答案 0 :(得分:6)
如果您只是说render
,那么您将呈现一个名称来自控制器和操作名称的视图。在您的情况下不存在这样的视图,因此您会收到错误。
AJAX更新基本上不会返回任何正文,所以你可以做到
render :nothing => true, :status => 200
避免查看视图。
答案 1 :(得分:0)
如果你想在200 OK上返回json消息,你可以这样做:
message = {'status' => 'Saved successfully.'}
render :json => message
答案 2 :(得分:0)
这是从Rails 6开始对我有用的
render plain: "OK"