simple_form как передать параметры в рельсы? - PullRequest
0 голосов
/ 02 мая 2018

Я хочу пакетно обновить записи по simple_form,

enter image description here

код как показано ниже:

= simple_form_for url: batch_update_admin_tuitions_path, method: 'put' do |f|
  table.table
    thead
      tr
        th.text-center
        th.text-center column1
        th.text-center column2
        th.text-center column3
    tbody.text-center
      - @tuitions.each do |tuition|
        tr
          td = f.input_field "user_ids[]", as: :boolean, value: tuition.user_id
          td = @users_hash[tuition.user_id].name
          td = tuition.num
          td = tuition.sum_amount
  = f.submit :Submit, class: 'btn btn-success'

но это не работает, `` `

Параметры:

{"utf8"=>"✓", "authenticity_token"=>"FDpxyq9LE8UjxBjIm4lstj29N86Xlja+czWZXDdMcnehgBzmh0zz7aE5ZKqGWCWtX/h+iRwnTE048IPPodG10w==", "/admin/tuitions/batch_update"=>{"user_ids"=>[]}, "commit"=>"Submit"}

Я обнаружил проблему: user_ids пуст. Как передать user_ids в params? У кого-нибудь есть хорошие идеи? Спасибо заранее!

1 Ответ

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

Из документации SimpleForm есть несколько помощников:

collection_check_boxes:

form_for @tuition do |f|
  f.collection_check_boxes :user_ids, User.all, :id, :name
end

если у вас есть ассоциация , вы можете использовать as: :check_boxes:

<%= simple_form_for @tuition do |f| %>
  <%= f.association :users, as: :check_boxes %>
  <%= f.button :submit %>
<% end %>

В целом, я думаю, что SimpleForm использует f.input вместо f.input_field, поэтому ваш код должен выглядеть так:

td = f.input "user_ids[]", as: :boolean, value: tuition.user_id
...