ruby-on-rails - 更新与订单关联的连接表...继续创建而不是更新
问题描述
情况:
订单由 ordercontroller create 方法创建到订单表中。
然后通过 videoordercontroller create 方法将视频上传到与 order_id 关联的 videoorder 表中。
我在订单显示页面中有这个将视频上传到订单:
<%= form_for([@order, @video_order]) do |form| %>
<%= form.file_field :video %>
<%= form.submit "Upload", class: "btn btn-success" %>
此表单在提交后技术上消失了,但我正在测试更新视频,因为我还想提供更新视频的能力,以防上传错误的视频。
我试过了:
<%= form_for([@order, @video_order], :url => edit_order_video_order_path(@order.id, @video_order), remote: true ) do |form| %>
<%= form.file_field :video %>
<%= form.submit "Upload", class: "btn btn-success" %>
但这给了我
"(No route matches [POST] "/orders/150/video_orders/150/edit")"
当然,这不起作用,但我也不知道如何允许从同一 URL 页面更新视频表 order_id。为了方便起见,我不想将用户发送到新页面。
所以基本上,我怎样才能允许更新视频表中的订单视频?
这是模型: video_order 模型
belongs_to :order
validates :order_id, uniqueness: true
订单订单模型
has_one :video_order
video_order 模型只有 order_id 和 video。订单模型没有 video_id 列。
此外,如果您发现任何关联错误或有更好的方法,请随时告诉我。
耙:
edit_order_video_order GET /orders/:order_id/video_orders/:id/edit(.:format) video_orders#edit
PATCH /orders/:order_id/video_orders/:id(.:format) video_orders#update
PUT /orders/:order_id/video_orders/:id(.:format) video_orders#update
这是在订单显示页面中进行的
我在订单控制器中有这个方法:
def show
@user = current_user
@video_order = VideoOrder.new
end
这是上传视频的地方。我也想允许用单独的表格更新它
解决方案
看起来这适用于更新表而不是创建新行:
<%= form_for(@order.video_order) do |form| %>
我目前唯一遇到的问题是之后的重定向。我得到“无法重定向到零!” 但我很快就会弄清楚。
重定向需要遵循以下原则:
redirect_to order_path(@video_order.order_id)
为了重定向回订单显示页面
这个解决方案最终变得如此简单!:)
推荐阅读
- javascript - Paypal 中的 RESOURCE_NOT_FOUND
- java - 检查 JPanel 的布局
- batch-file - 在 BATCH 文件中的引号内传递引号
- python - 如何在 Python 的一列中显示不同的小数位数
- geolocation - 如何使用 geolocation.getCurrentPosition 设置变量
- socket.io - 通过 Socket io 流式传输网络摄像头示例
- python - jupyter notebook:如何在继续运行后续单元的同时以编程方式停止单元执行
- asp.net-core - Azure 函数或后台服务
- python - 如何使用相对导入在 pytest 中导入 python 包
- django - Django AUTH_LDAP_GROUP_SEARCH ObjectClass 值从无到矫枉过正