【发布时间】:2017-03-06 12:02:13
【问题描述】:
我有 2 个模型:Chocolate 和 Kind,其中巧克力类看起来像:
class Chocolate < ActiveRecord::Base
has_many :kinds, inverse_of: :chocolate
accepts_nested_attributes_for :kinds
和 Kind 类看起来像:
class Kind < ActiveRecord::Base
belongs_to :chocolate
我有下一个简单的表格,其中包含:
= simple_form_for @chocolate do |ch|
= ch.simple_fields_for :kinds, @chocolate.kinds.build(kind: 'Bitter') do |k|
= k.input :kind
= ch.input :netto
= ch.submit
因此,当我提交表单时,它会向我的chocolates 表添加一条新记录,但它不会通过关联向我的kinds 表添加一条记录。
在ChocolateController 我有:
private
def chocolate_params
params.require(:chocolate).permit(:netto, kinds_attributes: [:kind])
end
那么,为什么它不通过关联写入我的表?我哪里错了?
【问题讨论】:
-
能否添加参数日志?
-
Parameters: {"utf8"=>"✓", "authenticity_token"=>"iu7...YPw==", "kind"=>{"kind"=>"Bitter"}, "chocolate"=>{"netto"=>"500 gr"}, "commit"=>"Create Chocolate"}@prakashS 请 -
您允许
kinds_attributes其中kind在实际参数中。这意味着您不会获得新种类的属性。 -
您的问题是您的嵌套模型没有正确嵌套在表单中。您需要将
simple_fields_for :kinds更改为ch.simple_fields_for :kinds。我以前没有使用过 simple_form,但这是使用标准 Rails 表单助手的方式。
标签: ruby-on-rails model-view-controller associations nested-attributes