问题描述
我遇到的问题是我在具有belongs_to的模型中添加了嵌套属性。我知道嵌套属性通常会出现在 has_many 的模型中。
class Project < ApplicationRecord
belongs_to :project_status
belongs_to :booking
belongs_to :company
accepts_nested_attributes_for :booking
accepts_nested_attributes_for :company
end
class Company < ApplicationRecord
has_many :projects
end
class Booking < ApplicationRecord
belongs_to :vehicle
belongs_to :user
has_many :projects
end
下面是我创建的表格。问题是我想在这个表单中创建一个新的预订,但是因为项目表已经引用了预订,它不允许我创建一个新项目,因为需要预订。但是,我希望能够在项目表单内创建预订。但我不知道该怎么做。
如果我单独创建一个预订,我可以在表单中手动输入预订 ID,它会保存。但我不想要这个。我希望能用项目表格来做。
<%= form_for :project do |form| %>
.......
<%= form.fields_for :company do |c| %>
<%= c.label :companyName %>
<%= form.select :company_id,Company.all.collect { |p| [ p.companyName,p.id ] },include_blank: true %>
<% end %>
<%= form.fields_for :booking do |b| %>
<div class="field">
<%= form.label :booking_id %>
<%= form.text_field :booking_id %>
</div>
<%= render 'booking_fields',b: b %>
<% end %>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
我的项目控制器看起来像这样。
def new
@project = Project.new
@project.build_booking
@project.build_company
end
def project_params
params.require(:project).permit(
:porjectName,.....
booking_attributes: [:id,:bookingStartDate,:bookingEndDate,:vehicle_id,:user_id],company_attributes: [:companyName])
end
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)