1

我发送了一个 Ajax POST 调用来创建一个新的评论。我希望我的控制器返回新对象的 ID,这样我就可以用它更新网页上的几个元素。然而,我得到的唯一功能返回是完整的网页代码。

这是阿贾克斯:

$(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

这是没有用的:

render :json => @review.id在创建评论之后或在 respond_to 块中放置 a 。至少不像在 flash[:success] 下的评论中输入的那样

祝你好运!我真的希望我能尽快得到一些回应!

4

1 回答 1

2

dataType在 Javascript中json发送请求时指定:

$.ajax({
    type: 'POST',
    dataType: 'json',
    // other stuff goes here
});

并像这样返回新的reviewid:

respond_to do |format|
  format.html { redirect_to @restaurant }
  format.js 
  format.json { render :json => @review }
end
于 2013-03-23T11:01:51.413 回答