Home > database >  Unpermitted parameter: :images in Rails
Unpermitted parameter: :images in Rails

Time:03-09

I'm new to Rails and have started building my first api; I'm attempting to send an array of strings down as one of the parameters in my api request, like this:

{
  "name": "doot doot",
  "plans": "",
  "sketches": "",
  "images": ["foo.png", "bar.png"]
}

Originally, images was a string but I ran a migration to alter it to allow for an array of strings instead, like this:

 change_column :projects, :images, "varchar[] USING (string_to_array(images, ','))"

In the controller I've defined the create function as:

def create
  project = Project.create(project_params)
  render json: project
end

def project_params
  params.require(:project).permit(:name, :plans, :sketches, :images)
end

but I still get the following error:

Unpermitted parameter: :images. Context: { controller: ProjectsController, action: create, request: #<ActionDispatch::Request:0x00007fb6f4e50e90>, params: {"name"=>"Simple Box", "plans"=>"", "sketches"=>"", "images"=>["foo.png", "bar.png"], "controller"=>"projects", "action"=>"create", "project"=>{"name"=>"Simple Box", "plans"=>"", "sketches"=>"", "images"=>["foo.png", "bar.png"]}} }

I consulted this question here but the solutions didn't work; any suggestions?

CodePudding user response:

You need to specify that images is an array.

  params.require(:project).permit(:name, :plans, :sketches, images: [])

See Permitted Scalar Values in the Rails Guides.

  • Related