首页 > 解决方案 > 更新与订单关联的连接表...继续创建而不是更新

问题描述

情况:

订单由 ordercontroller create 方法创建到订单表中。

然后通过 videoordercontroller create 方法将视频上传到与 o​​rder_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

这是上传视频的地方。我也想允许用单独的表格更新它

标签: ruby-on-railsruby

解决方案


看起来这适用于更新表而不是创建新行:

<%= form_for(@order.video_order)  do |form| %>

我目前唯一遇到的问题是之后的重定向。我得到“无法重定向到零!” 但我很快就会弄清楚。

重定向需要遵循以下原则:

redirect_to order_path(@video_order.order_id)

为了重定向回订单显示页面

这个解决方案最终变得如此简单!:)


推荐阅读