2016-10-04 2 views
0

Я получаю эту ошибку и с помощью Rails 5.NoMethodError (неопределенный метод `разрешение» для # <массива: 0x007f51c020bd18>

NoMethodError (не определен метод permit' for #<Array:0x007f51cf4dc948> app/controllers/traumas_controller.rb:99:in trauma_params' приложение/контроллеры/traumas_controller.rb: 25 : в `create_multiple»

PARAMS контроллера, как показано ниже

работы POST "/ травмы/create_multiple" для 127.0.0.1 в 2016-10-0. 4 20:09:36 +0530 Обработка с помощью TraumasController # create_multiple as JS
Параметры: {"utf8" => "✓", "fields" => [{"contusions" => "1", "burns" = > "", "at_scene" => "At Scene", "emergency_detail_id" => "96", "trauma_region" => "Head-Back"}], "commit" => "Submit"}

Я пытаюсь создать запись, как показано ниже в контроллере:

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 

Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо.

Kiran.

+0

Правильно ли я понимаю, что вы намерены принять любой массив, включая пустой массив для параметра: fields? Я считаю, что .permit не является правильным методом для проверки ввода. Что произойдет, если вы удалите оператор .permit? – Olli

ответ

2

Я разрешил его, обратившись к этому вопросу (https://github.com/rails/strong_parameters/issues/140) github.

РЕДАКТИРОВАТЬ

Для таких параметров, как следующее (которые находятся в массиве):

Параметры: { "полей" => [{ "контузии" => "1", «ожоги "=>" ", " at_scene "=>" At Scene "," emergency_detail_id "=>" 96 ", " trauma_region "=>" Head-Back "}]," commit "=>" Submit "}

Мы можем сделать:

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 
Смежные вопросы