嵌套形式:不允许的参数
Nested Form: unpermitted parameter
所以我是 Rails 的新手,我一直在尝试构建一个嵌套表单。我一直遇到很多麻烦,似乎无法让它工作。我在 youtube 上观看了多个视频,但我似乎无法找到我在做什么不同。为了我尝试构建一个产品,我有一个产品有很多买家,但买家只属于一个产品。 (假设您只能购买一种产品...)。当我提交我的表单时,我收到一个错误,我可以在服务器日志中看到:"Unpermitted parameter: buyer" 我觉得我已经尝试了一切..如果有人我会很高兴也许可以告诉我发生了什么事。非常感谢
我已遵循 Rails 指南并将以下内容添加到我的模型中:
class Product < ActiveRecord::Base
has_many :orders
has_many :buyers
accepts_nested_attributes_for :buyers
end
class Buyer < ActiveRecord::Base
belongs_to :product
end
产品控制器中的强参数:
def product_params
params.require(:product).permit(:name, :description, :image_url, :color, :adult, buyers_attributes: [:name, :age, :product_id])
end
产品控制器:
def new
@product = Product.new
@product.buyers.build end
然后对于表格:
Form
(抱歉,在此处插入代码时遇到重大问题)
最后这是我对两个表的架构:
create_table "buyers", force: :cascade do |t|
t.string "name"
t.integer "age"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "product_id" end
`</p>
<p>create_table "products", force: :cascade do |t|</p>
t.string "name"
t.text "description"
t.string "image_url"
t.string "color"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "price"
t.binary "adult"
end
您的产品接受 buyers
的嵌套属性,但您只是向表单添加买家(非复数)属性。您可能需要将嵌套形式更改为
<%= f.fields_for :buyers, [@product.buyers.build] do |x| %>
所以我是 Rails 的新手,我一直在尝试构建一个嵌套表单。我一直遇到很多麻烦,似乎无法让它工作。我在 youtube 上观看了多个视频,但我似乎无法找到我在做什么不同。为了我尝试构建一个产品,我有一个产品有很多买家,但买家只属于一个产品。 (假设您只能购买一种产品...)。当我提交我的表单时,我收到一个错误,我可以在服务器日志中看到:"Unpermitted parameter: buyer" 我觉得我已经尝试了一切..如果有人我会很高兴也许可以告诉我发生了什么事。非常感谢
我已遵循 Rails 指南并将以下内容添加到我的模型中:
class Product < ActiveRecord::Base
has_many :orders
has_many :buyers
accepts_nested_attributes_for :buyers
end
class Buyer < ActiveRecord::Base
belongs_to :product
end
产品控制器中的强参数:
def product_params
params.require(:product).permit(:name, :description, :image_url, :color, :adult, buyers_attributes: [:name, :age, :product_id])
end
产品控制器:
def new
@product = Product.new
@product.buyers.build end
然后对于表格: Form (抱歉,在此处插入代码时遇到重大问题)
最后这是我对两个表的架构:
create_table "buyers", force: :cascade do |t|
t.string "name"
t.integer "age"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "product_id" end
`</p>
<p>create_table "products", force: :cascade do |t|</p>
t.string "name"
t.text "description"
t.string "image_url"
t.string "color"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "price"
t.binary "adult"
end
您的产品接受 buyers
的嵌套属性,但您只是向表单添加买家(非复数)属性。您可能需要将嵌套形式更改为
<%= f.fields_for :buyers, [@product.buyers.build] do |x| %>