休斯顿,我们有一个问题:
class FirstModel
has_many :merged_models
has_many :second_models, :through => :merged_models
end
class SecondModel
has_many :merged_models
has_many :first_models, :through => :merged_models
end
class MergedModel
belongs_to :first_model
belongs_to :second_model
end
形式:
<%= form_for(first_model) do |f| %>
<%= f.fields_for :merged_model do |ff| %>
<%= ff.label :date %>
<%= ff.date_select :start_date %>
问题:
FirstModelsController#create as HTML 参数处理:{"utf8"=>"✓", "authenticity_token"=>"f+D8AaVzM6ahrUyo/nwxISFEleVrXGxo8m30sIiLIe7gvG8J9KfONjuT09j6z3M4Rvw+n3Hm6PMddOtfbgjt5g==","first_model"=>{"first_name" , "last_name"=>"yyy", "merged_model"=>{"start_date(1i)"=>"2017", "start_date(2i)"=>"2", "start_date(3i)"=>"28 ", "second_model_id"=>"1"}}, "commit"=>"Create"} 不允许的参数:merged_model 不允许的参数:merged_model
第一个模型的控制器的强参数:
params.require(:first_model).permit(:first_name, :last_name, merged_models_attributes: [:id, :start_date])
第一个模型接受合并模型的嵌套属性:
accepts_nested_attributes_for :merged_models
但是,在创建 FirstModel 之后,不会创建 MergedModel。试图以形式创建它:
<%= f.fields_for :merged_model [first_model.merged_models.build] do |ff| %>
但得到:
没有将 MergedModel 隐式转换为 Integer
完全不明白什么意思。。
还尝试从 FirstModel 的创建操作中创建一个新的 MergedModel,效果非常好:
@merge_model = MergedModel.create!
并得到了同样的错误 - 没有隐式转换......
任何人都可以对此进行更多解释吗?我觉得将我的 MergedModel 的参数数组传递给 MergedModel 的参数...?我完全迷失在这里......