I am getting this error and using Rails 5.
NoMethodError (undefined method
permit' for #<Array:0x007f51cf4dc948> app/controllers/traumas_controller.rb:99:in
trauma_params' app/controllers/traumas_controller.rb:25:in `create_multiple'
Controller params are as below.
Started POST "/traumas/create_multiple" for 127.0.0.1 at 2016-10-04 20:09:36 +0530 Processing by TraumasController#create_multiple as JS
Parameters: {"utf8"=>"✓", "fields"=>[{"contusions"=>"1", "burns"=>"", "at_scene"=>"At Scene", "emergency_detail_id"=>"96", "trauma_region"=>"Head-Back"}], "commit"=>"Submit"}
I am trying to create record as below in controller:
def create_multiple
trauma_params
params[:fields].each do |values|
u = Trauma.create(values)
end
end
def trauma_params
params.require(:fields).permit(:fields => [])
end
Please help me to resolve this issue.
Thanks in advance.
Kiran.
Parameters:
{"fields"=>[{"contusions"=>"1", "burns"=>"", "at_scene"=>"At Scene", "emergency_detail_id"=>"96", "trauma_region"=>"Head-Back"}]}
Safelist array of objects, with the "fields" attribute required:
def trauma_params
params.permit(fields: [
:contusions,
:burns,
:at_scene,
:emergency_detail_id,
:trauma_region
])
.require(:fields)
end
Source: https://edgeguides.rubyonrails.org/action_controller_overview.html#nested-parameters
I resolved it by referring this (https://github.com/rails/strong_parameters/issues/140) github issue.
EDIT
For parameters like the following (which are in Array):
Parameters: {"fields"=>[{"contusions"=>"1", "burns"=>"", "at_scene"=>"At Scene", "emergency_detail_id"=>"96", "trauma_region"=>"Head-Back"}], "commit"=>"Submit"}
We can do:
def trauma_params
params.require(:fields).map do |p|
ActionController::Parameters.new(p).permit(
:contusions,
:burns,
:at_scene,
:emergency_detail_id,
:trauma_region
)
end
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With