我发送一个Ajax POST调用来创建一个新的评论。我希望我的控制器返回新对象的ID,这样我就可以用它来更新我网页上的几个元素。我得到的唯一功能回报是完整的网页代码。
这是Ajax:
$(document).ready(function(){
$(".new_rate_restaurant").change(function(e){
e.preventDefault();
var path = $(this).closest("form").attr("action");
$.ajax({
type: 'POST',
url: path,
data: $(this).closest("form").serialize(),
success: function(response){
alert(response);
}
});
});
});
这是我的控制器:
if @review = Review.create(@attr)
flash[:success] = "Review saved. Share with friends!"
#render :json => @review
else
flash[:error] = @review.errors.full_messages.to_sentence
end
respond_to do |format|
format.html {redirect_to @restaurant}
format.js
format.json
end
这是没有用的:
在创建审核之后或在respond_to块中放置render :json => @review.id
。至少不是因为它在flash [:success]
祝你好运!我真的希望很快得到一些答复!
答案 0 :(得分:2)
在Javascript中发送请求时,将dataType
指定为json
:
$.ajax({
type: 'POST',
dataType: 'json',
// other stuff goes here
});
并返回新的review
ID,如下所示:
respond_to do |format|
format.html { redirect_to @restaurant }
format.js
format.json { render :json => @review }
end