我有三个模特 - 一个穿着者,一个收件人和一个礼物,
捐赠者模型 - has_one:收件人,belongs_to:gift,accepts_nested_attributes_for,:recipient,accepts_nested_attributes_for:gift
收件人模型 - belongs_to:donor
礼品模型 - has_many:捐赠者
当用户在展示页面上时 - / donor / 1 - 我希望能够编辑收件人并添加礼物。他们正在从一种形式编辑所有三个模型。
我在控制器中的show动作是提供一个表单,通过@recipient = @ donor.build_recipient向该表单上的donar添加一个recaient - 我在视图中设置了表单。这有效!
但是我试图允许用户使用 -
通过选择框将预先存在的礼物附加到用户<%= select(:gift, :gift_id, Gift.all.collect {|p| [ p.name, p.id ] }, {:prompt => 'Select gift'}) %>
这会显示一个包含表格中列出的所有礼物的选择框。
当我提交表格时,我可以编辑捐赠者的详细信息,添加收件人,但礼品模型(或捐赠者与礼品的关系)根本不会更新。我做错了什么?
答案 0 :(得分:0)
我相信你需要这样的东西:
<% form_for @donor do |f| %>
...
<% f.select :gift_id, Gift.all.map{ |p| [p.name, p.id] } %>
...
<% end %>
在这种情况下,不需要accepts_nested_attributes_for :gift
,因为您从可用的列表中选择礼物,而不是以捐赠者的形式创建礼物。