В Rails Forms, как связать вложенную ассоциацию по первичному ключу ассоциации, а не по индексу? - PullRequest
0 голосов
/ 31 мая 2018

С формами Rails (4.2), как я могу построить форму так, чтобы полезная нагрузка запроса представляла вложенную ассоциацию как хеш, который является ключом первичного ключа ассоциации?

У меня есть вложеннаяформа, как показано в документации .Если вы прокрутите вниз, вы увидите следующий пример:

<%= form_for @person do |person_form| %>
  ...
  <%= person_form.fields_for :projects do |project_fields| %>
    Project #<%= project_fields.index %>
    ...
  <% end %>
  ...
<% end %>

Когда форма отправляет запрос HTTP PATCH, полезная нагрузка, которую получает моя конечная точка, имеет следующий вид:

"person"=>{"project_attributes"=>{"0"=>{...}, "1"=>{...}, "2"=>{...}...}}

Вместоключи project_attributes, представляющие численно упорядоченный индекс, я хочу, чтобы ключ был первичным ключом id проекта.

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

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

# Option 1
Project.update(params[:project_attributes].keys, params[:project_attributes].values)

# Option 2
params[:project_attributes].keys.each do |project_id|
  Project.update(project_id, params[:project_attributes][project_id])
end

1 Ответ

0 голосов
/ 31 мая 2018

Вы захотите использовать accepts_nested_attributes_for для этого, и вам не нужно будет беспокоиться о параметрах и о том, как они передаются.

Для справки о том, как должно быть accepts_nested_attributes_forиспользуется, следуйте этому руководству .

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