Rails Вложенные сильные параметры, как их использовать? - PullRequest
0 голосов
/ 23 апреля 2020

Я использую Jquery dataTables. Эта библиотека работает с указанной структурой c json, такой как:

{"data"=>{"209"=>{"order"=>"", "name"=>"dssdbs", "task_deadline"=>"", "task_status"=>"Nie przypisano", "board_id"=>"17", "user_id"=>"2", "task_group"=>"WWW", "assigned-many-count"=>"0"}}, "id"=>"209"}

И вопрос в том, как я могу изменить ее на сильные параметры? Пока я работаю над своими параметрами в контроллере очень плохо:

task_params = params[:data][params[:id]]
@task = Test.find(params[:id]
@task.order = task_params[:order]
@task.name = task_params[:name]
@task.task_deadline = task_params[:deadline]
@task.task_status = task_params[:task_status]
@task.board_id = task_params[:board_id]
@task.user_id = task_params[:user_id]
@task.task_group = task_params[:task_group]
@task.save

Когда я хочу добавить новое задание, мои параметры выглядят так:

{"data"=>{"0"=>{"order"=>"", "name"=>"dssdbs", "task_deadline"=>"", "task_status"=>"Nie przypisano", "board_id"=>"17", "user_id"=>"2", "task_group"=>"WWW", "assigned-many-count"=>"0"}}}

Как вы видите, я Я использую 0 вместо идентификатора.

Есть ли какой-то чистый и хороший способ использовать сильные параметры здесь? Все отлично работает, но полностью отличается от DRY методологии.

Спасибо за любые советы

1 Ответ

1 голос
/ 23 апреля 2020
def task_params 
  params.fetch(:data)
        .fetch(params[:id])
        .permit(
          :name,
          :order
          # ...
        )
end

fetch можно заменить на require, если вы хотите, чтобы код повышался, если параметр отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...