2009-12-22 23 views
71

Tôi dường như không thể tìm thấy cú pháp để thêm lớp vào một thẻ được chọn do Rails collection_select tạo. Một số trợ giúp?Làm cách nào để đặt tùy chọn HTML cho collection_select trong Rails?

+1

bạn có thể đưa ra một số ví dụ những gì bạn muốn làm gì? Tôi không hiểu câu hỏi của bạn. – klew

+0

chắc ... Tôi đang sử dụng đường ray <% = f.collection_select ...%> để generate: Tôi chỉ muốn nó được: tybro0103

Trả lời

162

Nhiều người giúp đỡ Rails có nhiều đối số băm. Đầu tiên là thường các tùy chọn để kiểm soát các helper chính nó, và thứ hai là html_options nơi bạn thể chỉ định id tùy chỉnh, lớp học vv

Định nghĩa phương pháp trông như thế này:

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {}) 

Bạn sẽ nhận thấy multiple '= {}' trong danh sách params. Để sử dụng, tập đầu tiên của tùy chọn mà bạn sẽ xác định phải thực sự được kèm theo trong dấu ngoặc:

collection_select(:user, :title, UserTitle.all, :id, :name, {:prompt=>true}, {:class=>'my-custom-class'}) 

Nếu bạn không có bất kỳ tùy chọn để xác định bên cạnh những lớp html, sau đó chỉ cần đặt một placeholder băm rỗng:

collection_select(:user, :title, UserTitle.all, :id, :name, {}, {:class=>'my-custom-class'}) 

tài liệu API bổ sung có sẵn tại địa chỉ: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

+0

Ah, tôi nên đọc tài liệu thêm một chút nữa :) – tybro0103

+0

Drew, câu trả lời hay. Xóa tất cả các nghi ngờ của tôi liên quan đến collection_select. –

+0

Đây là phần mở rộng của câu trả lời này cho thấy cách sửa đổi kiểu .css và sử dụng các sự kiện onchange của jQuery '<% = collection_select (: question,: text, Question.all,: id,: text, {: prompt => 'Chọn Câu hỏi. .. '}, {: class =>' input ',: name =>' normalSelect ',: id =>' normalSelect ',: style =>' width: 50% ',: onchange => "$ (' # accordion ') accordion (' kích hoạt ', 2); $ (' # mù ') hiển thị (' mù ', 500) "})%>' – wantrapreneur

8
= f.collection_select :category_id, Category.order(:name), :id, :name, {}, {class: "store-select"} 
Các vấn đề liên quan