Rails AJAX 销毁 - 重新渲染索引问题
Rails AJAX Destroy - Re-render index issues
>我在使用Rails AJAX应用程序时遇到了一个问题,这让我感到困惑,尽管它看起来很简单!我正在一个简单的销售点轨道应用程序中处理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 %>
销毁.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
可能是
因为在销毁后,您将重定向到索引路径
我没有得到刷新
@orders
您的JS
可能未触发,您需要以下各项:
def destroy
@order = Order.find params[:id]
respond_to do |format|
if @order.destroy
format.js
format.html { redirect_to orders_path, notice: "Order was successfully deleted" }
else
format.js
format.html { render order_path(@order), notice: "Order could not be deleted" }
end
end
end
这将触发app/views/orders/destroy.js.erb
,这在您的 OP 中似乎没问题。
尝试将销毁操作更新为
@order = Order.find(params[:id])
@order.destroy
@orders=Order.all
删除所有重定向会工作。
相关文章:
- 如何强制对模态进行新渲染
- 如何在遍历表和添加新元素时获得tr的索引
- 如何在渲染新视图之前关闭所有事件
- 扩展成员应用程序,包括新的路线,现在没有任何渲染
- React选择性地不将新道具传递给渲染对象
- ajax重新渲染时获得新值
- 如何在 ng-repeat 中的某个特定索引上开始一个新行
- 获取新推送元素的数组索引
- Gulp Serve:渲染索引.html适用于所有路径
- 获取新推送项目的索引
- Rails AJAX 销毁 - 重新渲染索引问题
- 将数据发送到新页面并将其包含在索引页面中
- React 组件渲染在推送新 URL 时被多次调用
- 主干(也是木偶)尝试在集合开始时显示新记录,而不重新渲染整个集合
- 如何使用布局管理器重新排序/排序嵌套视图而不重新渲染
- 如何在索引.js中切换到新函数
- 在backbone.js中,如何使用新的模型数据更新视图,同时在没有完整渲染的情况下保持排序顺序
- d3.js树映射新数据;t渲染
- 关注标签触发模糊事件后新渲染的文本输入
- 我如何添加一个新的索引到列类型的数组