2016-11-22 9 views
1

Ajaxを初めて使用しました。 Ajaxリクエストを使用してデータベースからアイテムを削除するRubyアプリケーションがあります。削除は、ブラウザを更新した後にページにのみ表示されます。私は間違って何をしていますか?ここでブラウザをリフレッシュしない限り、ページに表示されるAjaxの呼び出しによる変更

はここでAjax呼び出し

<script> 
$(document).ready(function(){ 
    $('input[type="checkbox"]').on("change", function() { 
     var hall_id = $(this).val(); 
    $.ajax({ 
    type:"GET", 
    url:"items/" +hall_id , 
    dataType:"json", 
    data: {id: hall_id}, 
    success:function(result){ 
    alert(result); 
    } 
}) 
}); 
}); 
</script> 



<%= link_to "Logout", root_path %> 

<h1>Hello <%= @user.first_name%> <%= @user.last_name%></h1> 

<%= form_for @item do |f| %> 
    <%= f.label :to_do %>: 
    <%= f.text_field :to_do %><br /> 
    <%= f.hidden_field :email, :value => @user.email%> 


    <%= f.submit %> 
<% end %> 

<% @items.each do |item|%> 
    <%if item.email == @user.email%> 
     <%= form_for @item do |f| %> 
      <%= f.check_box :to_do, {}, item.id %> 
      <%= item.to_do%><br /> 
     <% end %> 
    <%end%> 
<%end%> 

と私のerbファイルである私のコントローラは

class ItemsController < ApplicationController 
    def index 
    end 

    def new 
    end 

    def show 
    @items = Item.find(params[:id]) 
    Item.destroy(params[:id]) 
    puts @items.email 
    redirect_to :back 
    end 

    def create 
    @item = Item.create(to_do: params[:item][:to_do], email: params[:item][:email]) 
    redirect_to :back 
    end 
end 

答えて

0

である私はこの問題は、あなたがで応答する必要が

redirect :back 

だと思いItemsを含むdivで更新したいHTML部分。開始する

推奨事項:

  • RailsのリソースのRESTfulなアーキテクチャを維持するために、エンドポイントを破壊する破壊するアクションを移動します。
  • 新しい破棄エンドポイントで使用されている削除メソッドを使用するには、ajax呼び出しを更新します。

だからあなたItemsControllerはこのようなものでなければなりません:

class ItemsController < ApplicationController 
    helper_method :item 
    helper_method :items 

    def index 
    items 
    end 

    def new 
    @item = Item.new 
    end 

    def show 
    item 
    end 

    def create 
    Item.create(item_params) 
    redirect_to item 
    end 

    def destroy 
    item.destroy 

    render 'items/list', items: items 
    end 

    private 

    def item 
    @item ||= Item.find(params[:id]) 
    end 

    def items 
    @items ||= Item.all 
    end 

    def item_params 
    params.require(:item).permit(:to_do, :email) 
    end 
end 

items_controller.rb

そして、AJAX呼び出しは次のようになります。

<script> 
    $(document).ready(function() { 
    $('input[type="checkbox"]').on("change", function() { 
     var hall_id = $(this).val(); 

     $.ajax({ 
     type: 'DELETE', 
     url: "items/" + hall_id , 
     dataType: "json", 
     data: { id: hall_id }, 
     success:function(data) { 
      $('.items-container').html(data); 
     } 
     }) 
    }); 
    }); 
</script> 
関連する問題