2016-10-19 4 views
0

ajaxで更新ポストを試しています。ajaxでレールを更新

posts_controller.rb

def update 
    if @post.update_attributes(post_params) 
    flash[:notice] = 'Post updated!' 
    redirect_to @post 
    else 
    flash[:alert] = 'Something wrong' 
    render :edit 
    end 
end 

application.js

$('.simple_form.edit_post').submit('submit', function (e) { 
    e.preventDefault(); 
    form = $(this).serialize(); 
    $.ajax({ 
    type: 'POST', 
    action: $(this).attr('action'), 
    data: form, 
    dataType: 'JSON' 
    }).done(function (data) { 
    alert(data.notice); 
    }).fail(function (data) { 
    alert(data.alert); 
    }); 
}); 

私は更新をしようとすると、私はクロームコンソールでエラーを取得するには、ページと警報出力未定義

が見つかりません
+0

これは役立ちますhttp://stackoverflow.com/questions/23967390/rails-flash-notice-via-ajax –

答えて

0

まず更新を行っているので、POSTリクエストの代わりにPUT/PATCHリクエストを作成する必要があります。

また、ajaxリクエストでurlを指定する必要があります。

$('.simple_form.edit_post').submit('submit', function (e) { 
    e.preventDefault(); 
    form = $(this).serialize(); 
    $.ajax({ 
     type: 'PATCH', 
     url: '/posts', 
     data: form, 
     dataType: 'JSON' 
    }).done(function (data) { 
     alert(data.notice); 
    }).fail(function (data) { 
     alert(data.alert); 
    }); 
}); 

また、お使いのコントローラであなたはjson形式でのAjaxリクエストに応答することができるはずです。

def update 
    if updated = @post.update(post_params) 
    flash[:notice] = 'Post updated!' 
    else 
    flash[:alert] = 'Something wrong' 
    end 

    respond_to do |format| 
    format.html { updated ? redirect_to @post : render :edit } 
    format.json { render json: flash.to_hash } 
    end 
end 
関連する問題