2012-12-27 8 views
16

Tôi có đoạn code sau trong quan điểm của tôiRails: simple_form: Bắt một chuỗi rỗng từ bộ sưu tập hộp kiểm

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

Và bất cứ khi nào tôi gửi biểu mẫu Tôi nhận được giá trị cái gì đó như ["admin, "moderator", ""] nhưng tôi đã chờ đợi một cái gì đó như ["admin, "moderator"], tại sao điều này?

Hơn nữa, tôi đã thực hiện phần tử kiểm tra và có một thẻ <input name="user[role_names][]" type="hidden" value=""> sau hộp kiểm cuối cùng, trong cùng nhóm kiểm soát. Tôi cho rằng điều này đang được thêm vào cuối cùng trong số params[:user][:recipient_role_names].

Tôi nên xử lý điều này như thế nào? Tôi biết tôi có thể làm một số reject(&:blank?) nhưng có cách nào sạch hơn trên params[:user][:recipient_role_names] không? Tôi cũng muốn biết lý do yếu tố đầu vào được thêm vào? Nó là một lỗi ở dạng đơn giản hay tôi đã làm điều gì sai?

thông tin khác:

  1. simple_form ngọc phiên bản: 2.0.4
  2. ray phiên bản: 3.2.8

Trả lời

16

Đó là tính năng một Rails'. Bạn sẽ có thể vô hiệu hóa nó trong Rails 4. Bạn có thể đọc thêm về điều này trên simple form issue #603Rails issue #5402

+0

hoàn hảo .. sẽ chấp nhận trong 5 phút .. một số hạn chế thời gian .. không thể chấp nhận bây giờ .. Btw Tôi rất thích hiểu tại sao .. bạn có bất kỳ ý tưởng tại sao đây là một tính năng đường ray? Tôi có nghĩa là tại sao họ thực hiện tính năng này? và điều này có nghĩa vụ sửa chữa những thứ khác, nếu vậy thì đó là cái gì? Nó sẽ là tuyệt vời nếu bạn có thể giải thích về nó một chút .. thx trước .. – n00b

+2

bạn có thể đọc giải thích ở đây http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box (đó là phần Gotcha) –