2011-12-15 11 views
6

Vì vậy, tôi đang sử dụng simple_form để tạo biểu mẫu của tôi, đây không phải là yêu cầu.Tôi làm cách nào để sử dụng collection_check_boxes với một mảng?

Điều tôi đang cố gắng làm là sử dụng simple_forms collection_check_boxes và chuyển cho nó một mảng.

Tôi đang lưu trữ thẻ của tôi trong configatron:

configatron.tags = [{:name => "wheels", :tagtype => "property"}, {:name => "roof", :tagtype => "property"}, {:name => "doors", :tagtype => "property"}] 

Đây là mô hình Tag của tôi:

class Tag 
    include Mongoid::Document 
    embedded_in :taggable, polymorphic: true 

    field :name 
    field :tagtype 
end 

Dưới đây là những gì tôi đã cố gắng:

<%= f.collection_check_boxes :tags, @tags, @tags.map{|tag| tag.name}, @tags.map{|tag| tag.name} %> 

nơi @tags là đặt thành configatron.tags trong bộ điều khiển

Tôi chỉ muốn làm cho collection_check_boxes hoạt động và sau đó on before_save xây dựng thẻ và nhúng nó vào tài nguyên hiện tại.

Tôi đã đọc ở đâu đó mà bạn có thể ánh xạ vào bộ sưu tập được chuyển vào và chọn nội dung của một mục của bộ sưu tập đó. Nếu tôi làm đúng, hãy ghi đè giá trị value_method? Dường như bạn không thể nhớ cách bạn có thể làm điều này. Tôi cũng muốn chuyển các thẻ hiện tại của tài nguyên này :collection => resource.tags để các thẻ này được chọn khi hiển thị.

Có cách nào để thực hiện việc này không? Làm thế nào tôi sẽ thao tác form_builder để làm điều này có thể, nếu vậy, làm thế nào? Tôi có nên thực hiện một cách tiếp cận khác không?

Sidenote: Chức năng này cũng hoạt động với xương sống, ở một số nơi xương sống sẽ được sử dụng để thêm thẻ.

Trả lời

3

Sau khi kiểm tra simple-form docs, tôi nghĩ rằng bạn cần phải vượt qua trong value_method và label_method như biểu tượng để collection_check_boxes

Chẳng hạn như sau:

<%= f.collection_check_boxes :tags, @tags, :name, :name %> 

Liệu công việc đó?

5

Làm thế nào để sử dụng collection_check_boxes với một Array:

FRUITS = [[1, 'Abiu'], [2, 'Açaí'], [3, 'Assai'], [4, 'Acreola']] 

<%= f.collection_check_boxes :fruits, FRUITS, :first, :last %>