簡體   English   中英

Rails 5:不允許的參數

[英]Rails 5: Unpermitted parameter

我正在嘗試用繭形寶石保存嵌套模型。 這是params json:

Parameters: {
  "utf8" => "✓",
  "authenticity_token" => "w/hwSu6yvT/R+6KFdoi7L6v3tDYJppiXyvQigBfTpD6EuTVz9P2CKImybxgip90YA0Yo7QKpID+IeCi2KLsy0g==",
  "project" => {
    "client" => "1", "name" => "Project 1", "instances_attributes" => {
      "1508163439344" => {
        "instances" => {
          "user_id" => "user1", "password" => "[FILTERED]", "service_url" => "http://localhost:3001"
        }
      }, "1508163446859" => {
        "instances" => {
          "user_id" => "user2", "password" => "[FILTERED]", "service_url" => "http://localhost:3002"
        }
      }
    }
  },
  "commit" => "Create Project"
}

對於項目控制器中的強參數代碼:

def project_params
  params
  .require(:project)
  .permit(
    :client, :name,
    instances_attributes: Instance.attribute_names.map(&:to_sym).push(:_destroy)
  )
end

現在,當我嘗試保存時,它向我顯示: Unpermitted parameter: instances

我想念什么?

您有2個解決方案:

  • 允許所有instances_attributes內容:

     def project_params params.require(:project).permit(:client, :name).permit!(:instances_attributes) end 
  • 允許所有instances_attributes鍵:

     def project_params instances_keys = (params[:project] || {})[:instances_attributes].keys params.require(:project).permit(:client, :name, instances_attributes: instances_keys) end 

你有沒有注意到你的params.Inside instances_attributes您有一個名為*再嵌套哈希instances 因此,您還需要允許他們。 如下更新您的project_params

def project_params
  params
  .require(:project)
  .permit(
    :client, :name,
    instances_attributes: [:instances=> Instance.attribute_names.map(&:to_sym).push(:_destroy)]
  )
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM