Обновление объединенной таблицы, связанной с заказом ... создается вместо обновления - PullRequest
0 голосов
/ 30 ноября 2018

Ситуация:

При создании метода ordercontroller в таблицу заказов создается заказ.

Затем видео загружается с помощью метода создания videoordercontroller в связанную таблицу видео-заказа.с order_id.

У меня есть это на странице показа заказов, чтобы загрузить видео в заказ:

<%= 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")"

Что, конечно, это не сработает, но я также не могу понять, как разрешить обновлять видеостолы order_id с той же страницы URL.Я не хочу отправлять пользователя на новую страницу для удобства.

Итак, в принципе, как я могу разрешить обновление видео заказов в таблице видео?

Вот модели: модель video_order

belongs_to :order
validates :order_id, uniqueness: true

модель заказа Order

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

Здесь происходит загрузка видео.я также хочу разрешить обновление из него с отдельной формой

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Похоже, это работает для обновления таблицы, а не для создания новой строки:

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

Единственная проблема, с которой я сейчас сталкиваюсь, - это перенаправление после.Я получаю "Невозможно перенаправить на ноль!"но я скоро это выясню.

Перенаправление должно быть примерно таким:

redirect_to order_path(@video_order.order_id)

Indede, чтобы перенаправить обратно на страницу показа заказа

Это решение оказалось таким простым!:)

0 голосов
/ 30 ноября 2018

form_for метод имеет параметр options, вы можете установить метод формы как 'patch' следующим образом:

form_for @object, url: 'some_url', method: 'patch'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...