Rails5,嵌套形式,未定义的参数
Rails5, nested form, undefined param
休斯顿,我们有问题:
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 %>
问题:
Processing by FirstModelsController#create as HTML Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"f+D8AaVzM6ahrUyo/nwxISFEleVrXGxo8m30sIiLIe7gvG8J9KfONjuT09j6z3M4Rvw+n3Hm6PMddOtfbgjt5g==",
"first_model"=>{"first_name"=>"yyyy", "last_name"=>"yyy",
"merged_model"=>{"start_date(1i)"=>"2017", "start_date(2i)"=>"2",
"start_date(3i)"=>"28", "second_model_id"=>"1"}}, "commit"=>"Create"}
Unpermitted parameter: merged_model Unpermitted parameter:
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| %>
但是得到了:
no implicit conversion of MergedModel into Integer
没完全明白什么意思..
还尝试从 FirstModel 的创建操作创建一个新的 MergedModel,并发出一声巨响:
@merge_model = MergedModel.create!
并得到同样的错误 - 没有隐式转换...
有人可以解释一下吗?我觉得将我的 MergedModel 参数数组传递给 MergedModel 参数...?我完全迷失在这里......
在全新安装的 Rails5 应用程序中,belongs_to
默认意味着 optional: false
(以前称为 required: true
)。
您需要创建一个 MergedModel
并与 FirstModel
和 SecondModel
关联...
看起来您正在尝试创建一个仅与 FirstModel
相关联的 MergedModel
,如果 SecondModel
是可选的,则您需要说明与 belongs_to
相关联。 ..
belongs_to :second_model, optional: true
您的表单应该包含 fields_for :merged_models
,而不仅仅是 merged_model
。
休斯顿,我们有问题:
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 %>
问题:
Processing by FirstModelsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"f+D8AaVzM6ahrUyo/nwxISFEleVrXGxo8m30sIiLIe7gvG8J9KfONjuT09j6z3M4Rvw+n3Hm6PMddOtfbgjt5g==", "first_model"=>{"first_name"=>"yyyy", "last_name"=>"yyy", "merged_model"=>{"start_date(1i)"=>"2017", "start_date(2i)"=>"2", "start_date(3i)"=>"28", "second_model_id"=>"1"}}, "commit"=>"Create"} Unpermitted parameter: merged_model Unpermitted parameter: 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| %>
但是得到了:
no implicit conversion of MergedModel into Integer
没完全明白什么意思..
还尝试从 FirstModel 的创建操作创建一个新的 MergedModel,并发出一声巨响:
@merge_model = MergedModel.create!
并得到同样的错误 - 没有隐式转换...
有人可以解释一下吗?我觉得将我的 MergedModel 参数数组传递给 MergedModel 参数...?我完全迷失在这里......
在全新安装的 Rails5 应用程序中,belongs_to
默认意味着 optional: false
(以前称为 required: true
)。
您需要创建一个 MergedModel
并与 FirstModel
和 SecondModel
关联...
看起来您正在尝试创建一个仅与 FirstModel
相关联的 MergedModel
,如果 SecondModel
是可选的,则您需要说明与 belongs_to
相关联。 ..
belongs_to :second_model, optional: true
您的表单应该包含 fields_for :merged_models
,而不仅仅是 merged_model
。