1

新しいレビューを作成するために Ajax POST 呼び出しを送信します。コントローラーが新しいオブジェクトの ID を返すようにして、Web ページのいくつかの要素をそれで更新できるようにします。しかし、私が得る唯一の機能的なリターンは、完全な Web ページ コードです。

アヤックスは次のとおりです。

$(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ブロックに入れます。少なくとも、flash[:success] の下のコメントに入力されているとおりではありません

頑張ってください!すぐに返信が来ることを本当に願っています!

4

1 に答える 1

2

Javascript でリクエストを送信する場合dataTypeの asを指定します。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
于 2013-03-23T11:01:51.413 に答える