2012-12-27 10 views
16

Mam następujący kod w moich poglądówszyn: simple_form: Pierwsze pusty ciąg z kolekcji checkbox

<%= f.input :role_names, as: :check_boxes, collection: @program.role_names %>

I ilekroć wysłać formularz jestem coraz wartościami coś ["admin, "moderator", ""] ale spodziewałem się czegoś podobnego ["admin, "moderator"], dlaczego tak jest?

Ponadto zrobiłem element kontrolny, a po ostatnim polu wyboru znajdował się znacznik <input name="user[role_names][]" type="hidden" value=""> w obrębie tej samej grupy kontrolnej. Przypuszczam, że to jest dodawanie na końcu w params[:user][:recipient_role_names].

Jak mam sobie z tym poradzić? Wiem, że mogę zrobić reject(&:blank?), ale czy istnieje lepszy sposób na params[:user][:recipient_role_names]? Chcę również wiedzieć, dlaczego element wejściowy jest dodawany? Czy to błąd w prostej formie, czy też zrobiłem coś złego?

Inne info:

  1. wersja simple_form gem: 2.0.4
  2. szyn wersję: 3.2.8

Odpowiedz

16

To dysponują szynach. Będziesz mógł wyłączyć to w Rails 4. Możesz przeczytać więcej na ten temat na simple form issue #603 i Rails issue #5402

+0

idealnie .. ll przyjąć w 5 minut .. jakiś czas przymus .. Nie mogę teraz zaakceptować .. Btw chciałbym zrozumieć dlaczego ... czy masz jakiś pomysł, dlaczego jest to funkcja szyn? Chodzi mi o to, dlaczego stworzyli tę funkcję? i czy to ma naprawić coś innego, jeśli tak, to co to było? Byłoby wspaniale, gdybyś mógł to wyjaśnić trochę ... z góry ... – n00b

+2

możesz przeczytać wyjaśnienie tutaj http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box (to sekcja Gotcha) –