即使看起来很简单,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
最佳答案
可能是因为销毁之后您将重定向到索引路径