我的blog/_form.html.erb
上有一系列复选框,这些复选框使用Javascript / JQuery为hidden_field_tag
更新了:subcategory_ids
。
隐藏字段如下:
<%= f.hidden_field :subcategory_ids %>
据Google代码检查员说,该值正在更新:
<input type="hidden" value="1,5,6" name="blog[subcategory_ids]" id="blog_subcategory_ids">
我的blog
中具有以下schema.rb
结构:
create_table "blogs", force: :cascade do |t|
t.string "title"
t.string "teaser"
t.text "body"
t.boolean "motivation", default: false
t.boolean "mindset", default: false
t.boolean "resourcing", default: false
t.boolean "planning", default: false
t.boolean "time_management", default: false
t.boolean "discipline", default: false
t.string "image_url"
t.text "pinterest_description"
t.boolean "published", default: false
t.datetime "published_at"
t.boolean "approved", default: false
t.boolean "featured", default: false
t.bigint "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "primary_category"
t.bigint "resource_id"
t.string "subcategory_ids", array: true
t.index ["resource_id"], name: "index_blogs_on_resource_id"
t.index ["user_id"], name: "index_blogs_on_user_id"
end
还有我的blogs_controller.rb
中的以下参数:
def blog_params
params.require(:blog).permit(
:title,
:teaser,
:body,
:primary_category,
:motivation,
:mindset,
:resourcing,
:planning,
:time_management,
:discipline,
:image_url,
:pinterest_description,
:published,
:published_at,
:featured,
:approved,
:resource_id,
:user_id,
:pins => [],
:subcategory_ids => []
)
end
但是,由于服务器中发生subcategory_ids
错误,我的unpermitted parameter: :subcategory_ids
似乎没有保存:
Started PATCH "/blogs/1" for ::1 at 2019-11-08 21:33:43 -0800
Processing by BlogsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"VDXdyzAYmVngd5at8QE4JIe09PeEuMi6+p99AFX8nv2iO3qIXGUEDId1jnGyRXR3h8vXLVjG/EUuGtHFxAt03A==", "blog"=>{"title"=>"Test Blog the First", "teaser"=>"Teaser Goes Here. Yes, all the things. Yes indeed-e-o. Words are being typed. By me.", "image_url"=>"https://sixkeyskills.s3-us-west-1.amazonaws.com/woman-arms-up-ocean.jpg", "body"=>"<p data-bind=\"text: generatedIpsum\">Blog text</p>", "primary_category"=>"General", "motivation"=>"1", "mindset"=>"1", "resourcing"=>"0", "planning"=>"0", "time_management"=>"0", "discipline"=>"0", "subcategory_ids"=>"1,5,6", "pinterest_description"=>"", "published_at"=>"2019-11-07 00:00:00 UTC", "published"=>"1", "approved"=>"1", "featured"=>"0", "resource_id"=>""}, "commit"=>"Save", "id"=>"1"}
Blog Load (0.3ms) SELECT "blogs".* FROM "blogs" WHERE "blogs"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ app/controllers/blogs_controller.rb:112
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ app/controllers/blogs_controller.rb:103
(41.0ms) SELECT "subcategories"."id" FROM "subcategories" INNER JOIN "blog_categorizations" ON "subcategories"."id" = "blog_categorizations"."subcategory_id" WHERE "blog_categorizations"."blog_id" = $1 [["blog_id", 1]]
↳ app/controllers/blogs_controller.rb:73
Unpermitted parameter: :subcategory_ids
(0.1ms) BEGIN
↳ app/controllers/blogs_controller.rb:82
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ app/controllers/blogs_controller.rb:82
(0.2ms) COMMIT
↳ app/controllers/blogs_controller.rb:82
这很奇怪,因为它表明已编辑的博客确实具有subcategory_ids
,但随后又说这是一个不允许的参数。
我已重新启动服务器,但无济于事。谁能看到为什么发生此错误或为什么没有保存该错误?
答案 0 :(得分:0)
因为在控制器中您等待一个数组,但数组未出现。 您在表单中的输入应如下所示:
:h :!start
或尝试编写字段blog[subcategory_ids] []
或更改控制器
multiple: true
到
:subcategory_ids => []
更多变体:
:subcategory_ids
和控制器:
<%= form.hidden_field :categories, value: 1, multiple: true %>
<%= form.hidden_field :categories, value: 2, multiple: true %>
<%= form.hidden_field :categories, value: 3, multiple: true %>