2012-12-19 40 views
14

Tôi yêu đá quý lục soát cho sự linh hoạt của nó, tuy nhiên tôi không thể lấy collection_select chuẩn để hoạt động đúng. Có lẽ ai đó có thể hỗ trợ.Rails + Ransack - Bộ sưu tập danh sách thả xuống?

Ví dụ:

 <%= collection_select(:expense, :project_id, Project.all, 
     :id, :name, { prompt: 'Select Project'}, { class: 'span4' }) %> 

trong trường hợp này, mã này là từ một màn hình nhập chi phí, vì vậy các tham số đầu tiên là đối tượng chi phí. Nó nên ở dạng ransack? Ngoài ra, tôi biết tôi cần phải có hậu tố trong đó. Trong ví dụ này, tôi muốn project_id_eq là mẫu tìm kiếm.

Ngoài ra, biểu mẫu của tôi nằm trên bộ điều khiển và chế độ xem được gọi là "báo cáo", tôi không đặt tìm kiếm này trong bộ điều khiển mặc định.

Cảm ơn!

Trả lời

28

Dường như điều này sẽ hoạt động.

<%= f.select :project_id_eq, options_from_collection_for_select(Project.all, "id", "name", @search.project_id_eq) %> 

Nếu có đề xuất khác, cũng rất muốn biết điều đó.

+0

Điều này hoạt động khá tốt với ngoại lệ không cho phép bạn đặt lời nhắc ("Chọn"). – dspencer

+3

@dspencer Chỉ cần đặt 'include_blank: true' bên ngoài dấu ngoặc đơn:' <% = f.select: languages_name_eq, options_from_collection_for_select (Ngôn ngữ.all, "id", "name"), include_blank: true%> ' – Edmund

14

Để làm điều này với một include_blank, đặt nó bên ngoài dấu ngoặc đơn:

ví dụ:

<%= f.select :languages_id_eq, options_from_collection_for_select(Language.all, "id", "name"), include_blank: true %>

== CẬP NHẬT ==

tốt hơn, sử dụng f.collection_select. Bằng cách này sau khi người dùng tìm kiếm nội dung nào đó bằng cách sử dụng menu thả xuống, tùy chọn đó được chọn trước trên trang sau:

<%= form.collection_select :vendor_id_eq, Vendor.all, :id, :name, include_blank: true %> 
Các vấn đề liên quan