我在这个问题上停留了一段时间。
需要使用自定义输入为竞争 类别创建表格。它应该从 Information 表中获取所有值并构建输入,但棘手的部分是应将其保存到 Category_informations 表中。
class Competition < ApplicationRecord
has_many :categories
has_many :informations
end
class Category < ApplicationRecord
belongs_to :competetion
has_many :category_informations
has_many :information, through: competition
end
class CategoryInformation
belongs_to :catagory
belongs_to :information
end
class Information < ApplicationRecord
belongs_to :competetion
has_many :category_informations
end
竞争->名称
类别->名称,Competition_id
信息->名称,Competition_id
类别信息->值,类别ID,信息ID
答案 0 :(得分:0)
听起来像是您在寻找accepts_nested_attributes_for
https://rubyplus.com/articles/3681-Complex-Forms-in-Rails-5
还要检查cocoon宝石。
答案 1 :(得分:0)
看看这个宝石:https://github.com/plataformatec/simple_form
简单表单旨在在帮助您使用功能强大的组件创建表单的同时尽可能地灵活。
让我们举一个简单的例子:
class Machine < ActiveRecord::Base
has_many :parts , inverse_of: :machine
accepts_nested_attributes_for :parts
end
class Part < ActiveRecord::Base
# name:string
belongs_to :machine
end
有了这些模型,我们可以使用simple_form以单一形式更新机器及其相关部件:
<%= simple_form_for @machine do |m| %>
<%= m.simple_fields_for :parts do |p| %>
<%= p.input :name %>
<% end %>
<% end %>
对于“新”操作,请从控制器构建嵌套模型:
class MachinesController < ApplicationController
def new
@machine = Machine.new
@machine.parts.build
end
end
来源:https://github.com/plataformatec/simple_form/wiki/Nested-Models