即使允许,Rails 5.2数组也不会保存(不允许的参数)

我的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,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]]
  ↳ 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]]
  ↳ app/controllers/blogs_controller.rb:82
   (0.2ms)  COMMIT
  ↳ app/controllers/blogs_controller.rb:82

这很奇怪,因为它表明已编辑的博客确实具有subcategory_ids,但随后又说这是一个不允许的参数。

我已重新启动服务器,但无济于事。谁能看到为什么发生此错误或为什么没有保存该错误?

qwweerrttyyuuiioop 回答:即使允许,Rails 5.2数组也不会保存(不允许的参数)

因为在控制器中您等待一个数组,但数组未出现。 您在表单中的输入应如下所示:

: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,value: 3,multiple: true %>
本文链接:https://www.f2er.com/3133917.html

大家都在问