Как создать несколько дочерних объектов после того, как родитель был создан? - PullRequest
0 голосов
/ 22 мая 2018

Это мой сценарий:

У меня есть модель Order и модель Item .Они имеют следующие отношения:

class Order < ApplicationRecord
    has_many :items
end

class Item < ApplicationRecord
    belongs_to :order
end

В моем проекте изначально мне нужно было создать Заказ без Предметов.После этого мне нужно создать элементы, связанные с этим заказом.

Я уже попробовал пользователя nested_attributes , однако мне нужно будет создавать элементы более одного раза и во второй разпопробуйте уже созданные мной элементы, которые появятся в форме для редактирования.

Есть предложения по лучшему подходу?

РЕДАКТИРОВАТЬ:

Добавить еще одну информацию.Мне нужно создать несколько элементов одновременно.

1 Ответ

0 голосов
/ 22 мая 2018

Можно создать сначала ваш Заказ, а затем элементы.

# config/routes
...
resources :orders do
  resources :items
end

# app/controllers/itesm_controller.rb
class ItemsController < ApplicationController
  def new
    order = Order.find(params[:order_id]
    @item = order.items.new
  end

  def create
    item.create(item_params)
    redirect_to orders_path # just guessing your paths
  end

  protected

  def item_params
    params.require(:item).permit(:your, :attributes, :here)
  end
end

# Assuming Rails +5.1
# app/views/items/_form.html.erb
# you can use this partial in 'new.html.erb' and 'edit.html.erb'

<%= form_view model: @item do |form| %>
  <%= form.label :your_attribute %>
  <%= form.text_field :your_attribute %>
  <%= form.submit %>
...