这是我的情景:
我有一个订单模型和一个商品模型。他们有以下关系:
class Order < ApplicationRecord
has_many :items
end
class Item < ApplicationRecord
belongs_to :order
end
在我的项目中,最初,我需要创建没有项目的订单。之后,我需要创建与该订单相关的项目。
我已经尝试了用户 nested_attributes ,但是,我需要多次创建项目,并且在第二次尝试我已经创建的项目显示在表单中进行编辑。
有关最佳方法的任何建议吗?
编辑:
再添加一条信息。我需要一次创建多个项目的选项。
答案 0 :(得分:0)
选项可以是首先创建您的订单,然后创建项目。
# 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 %>