Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails4: How to permit a hash with dynamic keys in params?

I make a http put request with following parameters:

{"post"=>{"files"=>{"file1"=>"file_content_1", "file2"=>"file_content_2"}}, "id"=>"4"}

and i need to permit hash array in my code. based on manuals I've tried like these:

> params.require(:post).permit(:files) # does not work > params.require(:post).permit(:files => {}) # does not work, empty hash as result > params.require(:post).permit! # works, but all params are enabled 

How to make it correctly?

UPD1: file1, file2 - are dynamic keys

like image 656
rdo Avatar asked Aug 21 '13 06:08

rdo


People also ask

What is params permit?

The permit method returns a copy of the parameters object, returning only the permitted keys and values. When creating a new ActiveRecord model, only the permitted attributes are passed into the model.

Is params a hash?

params is a method on the ActionController::StrongParameter class. While params appears to be a hash, it is actually an instance of the ActionController::Parameters class.

What are strong parameters in Rails?

Strong Parameters, aka Strong Params, are used in many Rails applications to increase the security of data sent through forms. Strong Params allow developers to specify in the controller which parameters are accepted and used.


Video Answer


1 Answers

Rails 5.1+

params.require(:post).permit(:files => {}) 

Rails 5

params.require(:post).tap do |whitelisted|   whitelisted[:files] = params[:post][:files].permit! end 

Rails 4 and below

params.require(:post).tap do |whitelisted|   whitelisted[:files] = params[:post][:files] end 
like image 150
Orlando Avatar answered Sep 19 '22 09:09

Orlando