Создать и обновить с помощью флажков и простой формы - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь сделать что-то простое, но по какой-то причине это не работает и не возвращает никаких ошибок.

У меня есть модель User и модель ManualBill.

Счет за ручную принадлежит пользователю (я могу выбрать, кто заплатил, когда я его создаю, и он принадлежит этому пользователю).Но затем, после того, как будет создан Ручной счет, я также хочу иметь возможность добавлять «manual_bills_payers», которые являются теми, кто не оплатил счет, но должен вернуть его.В конце концов, это заставляет мои модели выглядеть так:

class ManualBill < ApplicationRecord
  belongs_to  :flat
  belongs_to  :user
  has_many :manual_bill_payers
  has_many :users, through: :manual_bill_payers
end

И

class ManualBillPayer < ApplicationRecord
  belongs_to :manual_bill
  belongs_to :user
end

Я создал форму обновления для ManualBill, в которой я собираюсь выбрать несколькопользователи (которые собираются быть manual_bill_payers) с флажками (я в цикле, поэтому я назвал manual_bill «счет» здесь.

  <%= simple_form_for [@flat, bill] do |f| %>
    <%= f.error_notification %>
      <%= f.association :manual_bill_payers, as: :check_boxes, 
       :label_method => 
       lambda { |owner| "#{owner.email}" },collection: User.all, 
       input_html: {class: "input- 
       bar-settings"} %>
    <%= f.submit 'Add payers', class: "btn-form" %>
  <% end %>

Я действительно не понимаю, что делать здесь.Я хочу сделать, в основном, СОЗДАТЬ несколько новых manual_bill_payers при обновлении manual_bill, выбрав пользователей, которые находятся в моей квартире (все пользователи БД в приведенном выше примере). Я также хочу иметь возможность удалить их, сняв флажки.

Я в основном пробовал все ... от изменения моделей до установки "has_and_belongs_to_many" вместо "сквозной" связи до изменения: manual_bill_payers на: users в simple_form.

Большинствовремя обновления (без ошибок и перенаправления на страницу показа), но я все еще получаю пустой массив, когда я делаю ManualBillPayer.all или когда я проверяюk my manual_bill.manual_bill_payers.

Мой метод обновления здесь на всякий случай

 def update
   @manual_bill = ManualBill.find(params[:id])
    authorize @manual_bill
    if @manual_bill.update(manual_bill_params)
      redirect_to flatshare_path(@manual_bill.flat)
    else
      redirect_to root_path
    end
 end

 def manual_bill_params
   params.require(:manual_bill).permit(:manual_bill_payer_id)
 end

У меня нет никакого метода create в этом контроллере, потому что manual_bill создается где-то еще, поэтомупоследний метод довольно пустой

Где я не прав?Есть ли что-то, что я полностью понимаю?

Я поставил повышение в обновлении, чтобы проверить параметры

 {"utf8"=>"✓",
   "_method"=>"patch",
   "authenticity_token"=>"280izDKna4QWfr0OhZJW6u/
  UWcqlxo56yR17fBDX4QFKhNG94mYqbBLPuq+ifo3mNIV10GFk1RK7Hr5AnmosOA==",
  "manual_bill"=>{"manual_bill_payer_ids"=>["", "1", "35", "34"]},
  "commit"=>"Add payers",
  "flatshare_id"=>"15",
  "id"=>"15"}

Большое спасибо

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