Сильные параметры Rails - Массив хэшей - Несколько записей в одной форме - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь отправить несколько записей в одной форме в приложении Rail 5.2.Я не использую принимает вложенные атрибуты другой модели, так как всегда казалось, что вводятся записи, которые были созданы ранее.Записи не могут быть отредактированы после создания.

<%= form_tag entry_details_path do %>
  <% @entries.each do |entry| %>
    <%= fields_for 'entries[]', entry do |e| %>
      <div class="field">
        <%= e.label :user_account_id %><br>
        <%= e.text_field :user_account_id %>
      </div>
      <div class="field">
        <%= e.label :amount %><br>
        <%= e.text_field :amount %>
      </div>
     <% end %>
   <% end %>
   <div class="actions">
     <%= submit_tag %>
   </div>
 <% end %>

Параметры выглядят следующим образом:

"entries"=>[<ActionController::Parameters {"user_account_id"=>"3", "amount"=>"55"} permitted: false>, <ActionController::Parameters {"user_account_id"=>"4", "amount"=>"65"} permitted: false>]

Я хочу передать весь массив хешей в создание, например:

def create_multiple_entries
  @entries = Entries.create(multiple_entries_params)
  @entries.reject! { |e| e.errors.empty? }
  if @entries.empty?
    redirect_to entries_path
  else
   render 'new'
 end
end

Приведенный выше метод работает, если вручную ввести массив.Моя задача - сильные параметры (я думаю).Прямо сейчас у меня есть:

def leave_accrual_details_params
  params.require(:entries).permit([:user_account_id, :amount])
end

Что дает мне следующую ошибку:

!! #<NoMethodError: undefined method `permit' for #<Array:0x00007fee4014ec78>>

1 Ответ

0 голосов
/ 02 февраля 2019

Попробуйте следующее для Rails 5:

def leave_accrual_details_params
  params.require(:entries).map do |p|
    p.permit(:user_account_id, :amount)
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...