San*_*yal 5 ruby-on-rails strong-parameters
我正在开发一个带有名为 element 的 atter_accessor 对象的模型。我想将表单数据数组传递给元素对象。在 Rails 控制台中,我收到“未经允许的参数”错误。
Parameters: {"authenticity_token"=>"[FILTERED]", "category"=>{"name"=>"asfd", "body"=>"asf", "element"=>{"1"=>"asfd:text", "2"=>"asfd:text", "3"=>"asfd:text"}}, "type"=>"text", "commit"=>"Create Category"}
Unpermitted parameter: :element. Context: { controller: CategoriesController, action: create, request: #<ActionDispatch::Request:0x0000000106b3ff68>, params: {"authenticity_token"=>"[FILTERED]", "category"=>{"name"=>"asfd", "body"=>"asf", "element"=>{"1"=>"asfd:text", "2"=>"asfd:text", "3"=>"asfd:text"}}, "type"=>"text", "commit"=>"Create Category", "controller"=>"categories", "action"=>"create"} }
Run Code Online (Sandbox Code Playgroud)
模型中 attr_accessor :elements
在控制器中
def category_params
params.require(:category).permit(:name, :body, :elements => [])
end
Run Code Online (Sandbox Code Playgroud)
我尝试了很多替代方案,也将其更改:elements为element: [],但没有任何效果。我想我在这里遗漏了一些东西,这就是我得到未经允许的参数的原因。
您没有提到您正在使用的 Rails 版本,但是
:elements => []不起作用,因为 elements 是 ruby 哈希而不是数组
在 Rails 5.1+ 上你可以使用
params.require(:category).permit(:name, :body, :elements => {})
Run Code Online (Sandbox Code Playgroud)