即使看起来很简单,Rails AJAX应用程序也存在问题,这使我感到困惑!我正在使用简单的销售点Rails应用程序处理class Order。正在发出请求,因为订单将在刷新页面时删除(但我没有刷新@orders),正如我认为我在destroy.js.erb中指定的那样。

orders / index.html

<div id="orders">
    <%= render 'orders/index' %>
</div>

<%= link_to 'New Order', new_order_path, remote: true %>
<div id="order-form" style="display:none;"></div>


orders / _index.html

<% if @orders.any? %>
    <% @orders.each do |order| %>
        <%= link_to "Show #{order.id}", order_path(order), class: "something" %>
        <%= link_to "Delete #{order.id}", order_path(order), method: :delete, class: "something" %>
        <%= link_to "Delete order with ajax", order_path(order), remote: true, method: :delete %>
    <% end %>
<% else %>
    <p>No orders yet</p>
<% end %>


destroy.js.erb

//When deleting order on order index - render orders again.
$('#orders').html("<%= j (render 'orders/index') %>");


以及orders_controller.rb中的相关操作

class OrdersController < ApplicationController
  respond_to :html, :js

    def index
        @orders = Order.paginate(page: params[:page])
    if params[:search]
      @orders = Order.search(params[:search]).order("created_at DESC")
    else
      @orders = Order.all.order('created_at DESC')
    end
  end

  def destroy
    @order = Order.find(params[:id])
    if @order.destroy
      flash[:notices] = ["Order was successfully deleted"]
      redirect_to orders_path
    else
      flash[:notices] = ["Order could not be deleted"]
      render order_path(@order)
    end
  end


我怀疑问题出在我的orders_controller销毁或索引操作中,但是我不清楚在Rails中使用AJAX的许多方式。

链接到仓库-https://github.com/benhawker/point-of-sale-rails

最佳答案

可能是因为销毁之后您将重定向到索引路径

09-30 16:35
查看更多