2010-12-29 33 views

Trả lời

12
<%= select_tag(:services, 
       Service.all.collect { |c| [c.id, c.name] }. 
       insert(0, "Select a Service"))%> 

Như đã trả lời cho câu hỏi, này là dành cho Rails 2.3. Đối với Rails 3, xem câu trả lời của Prathan Thananart.

139

Hầu hết thời gian, bạn không muốn thêm bất cứ điều gì đến các mảng trực tiếp; một trong hai giải pháp này là giải pháp sạch hơn:

  • Sử dụng :prompt => "Placeholder" nếu bạn muốn trình giữ chỗ chỉ hiển thị khi thuộc tính không được hiển thị khi biểu mẫu được hiển thị. Nó sẽ được chọn theo mặc định, nhưng không có gì sẽ được lưu nếu người dùng gửi. Nếu thuộc tính đã được phổ biến [có thể vì a) có giá trị mặc định hoặc b) đó là biểu mẫu chỉnh sửa], mục trình giữ chỗ sẽ bị bỏ qua hoàn toàn khỏi danh sách.
  • Sử dụng :include_blank => "Placeholder" nếu bạn muốn bao gồm trình giữ chỗ trong danh sách được hiển thị mọi lúc.
+0

Hoàn toàn đồng ý. Đánh dấu câu trả lời hoạt động nhưng là rất hacky. Đây là tùy chọn tích hợp để thực hiện những gì bạn muốn. EDIT: Chỉ cần thấy rằng câu trả lời ban đầu là cho 2,3. Tuy nhiên, tôi sẽ kết hợp cả hai câu trả lời. –

+3

': prompt' không hoạt động với tôi – Uko

+0

Nếu bạn làm: include_blank: true -it sẽ chèn một ô trống. – mjnissim

Các vấn đề liên quan