Ruby on rails 由于父ID为空,Rails复杂表单无法保存

Ruby on rails 由于父ID为空,Rails复杂表单无法保存,ruby-on-rails,ruby,forms,Ruby On Rails,Ruby,Forms,我使用的是rails 4.2.4、Ruby 2.2.1p85和MySQL 5.5 由于父对象的id为空,我在获取要保存的rails复杂表单时遇到问题。当然它是空白的,它还没有被创建。我的数据库中已经有一个国家的列表,我正试图将其添加到新创建的设施中。每个设施都属于一个国家。设施是父窗体,其字段_包含以下内容: <%= f.fields_for :country do |country| %> <div class="form-group"> <%= coun

我使用的是rails 4.2.4、Ruby 2.2.1p85和MySQL 5.5

由于父对象的id为空,我在获取要保存的rails复杂表单时遇到问题。当然它是空白的,它还没有被创建。我的数据库中已经有一个国家的列表,我正试图将其添加到新创建的设施中。每个设施都属于一个国家。设施是父窗体,其字段_包含以下内容:

  <%= f.fields_for :country do |country| %>
<div class="form-group">
  <%= country.label :Country, 'Facility Country:' %>
  <%= country.select :id, options_from_collection_for_select(@countries, 
      "id", "name"), {include_blank: "Select a Country..."}, {class: "form-control"} %>
</div>

它在params对象中获得了正确的国家id,但由于设施尚未创建,它不知道该做什么。它只是试图在facility中用一个空白id保存它。我如何解决这个问题?谢谢。

尝试在
@facility.save
之前手动设置国家/地区id,以停止activerecord查找与facility加入的国家/地区。为了确保正确,请尝试从参数中去掉“country_attributes”键

应该是这样的:

country_attr = facility_params.delete "country_attributes"
@facility = Facility.new(facility_params)
@facility.country_id = country_attr["id"]

编辑:添加了关于剥离国家属性的注释。

这会导致相同的问题。问题发生在这一行:@facility=facility.new(facility_params)哦,顺便说一句,params对象中已经存在country_id,缺少它的facility。设置国家id不会有任何影响。嗯,你能从服务器日志中粘贴相关POST请求的内容吗?因此,我们可以看到一个您拥有的参数的示例。{“utf8”=>“✓", "真实性令牌“=>”LDGFFOIJEOIJRMLOCVIUOSRWE==”,“设施”=>“{”姓名“=>”乔·布鲁“,”url“=>”,“国家属性“=>{”id“=>”2“}”,地址属性“=>{”0“=>”{”街道“=>”123 F街“,”城市“=>”勃朗宁“,”州“=>”内华达州“}>,”提交“=>”创建设施“,”控制器“=>”设施“,”行动“=>”创建”}
country_attr = facility_params.delete "country_attributes"
@facility = Facility.new(facility_params)
@facility.country_id = country_attr["id"]