2012-04-05 21 views

Trả lời

45

Ben,

Tùy thuộc vào cách bạn đang xây dựng các tùy chọn để chọn. Nếu bạn đang làm như mã dưới đây, chỉ cần chuyển một chuỗi vào ô trống:.

select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, {:include_blank => 'Some text here'}) 

Nếu bạn đang thiết lập các tùy chọn với một options_for_select(), sau đó bạn có thể làm một cái gì đó như sau:

options_for_select([["Dollar", "$"], ["Kroner", "DKK"]]) 

Với value = "" là giá trị thứ hai trong mảng và tên hiển thị trong trình đơn thả xuống trước tiên. Vì vậy, trong trường hợp của bạn, bạn có thể thay đổi câu trả lời thứ hai trông như thế này:

options_for_select([["Some text here", ""], ["Dollar", "$"], ["Kroner", "DKK"]]) 
+2

này đã không hỏi, nhưng nếu bạn muốn tùy chọn trống không phải là lựa chọn bạn có thể thêm ': include_blank => true, disabled: "", được chọn: "", trình giữ chỗ: "Foo Bar" ' – MCB

+0

Georgi có câu trả lời hay hơn, bên dưới. thay vì 'include_blank', sử dụng' prompt: 'Người nào?' 'Nó sẽ có một giá trị trống, nhưng văn bản hiển thị mà bạn cung cấp. 'include_blank' chỉ chấp nhận một boolean - nó không chấp nhận một chuỗi để hiển thị. –

1

Bạn có thể thực hiện việc này theo cách thủ công bằng cách thêm ["Your Text", ""] vào đầu mảng được chuyển đến options_for_select hoặc thêm "<option value=\"\">#{h("Your Text"}</option>" vào đầu chuỗi được chuyển đến select_tag.

31

Thay vì

:include_blank => true 

Hãy thử

:include_blank => "your text here" 

nếu đây là những gì bạn đang tìm kiếm.

+2

không thực sự, đặt nhãn, không phải là giá trị (thuộc tính) – zappan

+0

Mặc dù không phải là câu trả lời cho câu hỏi - đó là câu trả lời cho câu hỏi của tôi khi tôi muốn đặt nhãn trống - cổ vũ. –

+0

Điều này sẽ không hoạt động đối với các phương thức 'select_tag' nhưng sẽ làm việc với các phương thức' select'. (Và, có, chúng _are_ khác nhau.) Sử dụng một chuỗi cho giá trị trong 'include_blank' sẽ chỉ cung cấp một tùy chọn trống không có chuỗi. Sử dụng 'prompt' trong trường hợp đó. –

22

Nếu bạn đang sử dụng select_tag(name, option_tags = nil, options = {}) chức năng, tùy chọn đúng là :prompt => "Some text" hơn là thiết lập một giá trị chuỗi cho select

+3

Mất quá nhiều thời gian để tìm ra nó khác với select_tag so với lựa chọn truyền thống. Cảm ơn. – zarazan

+0

thẻ hoạt động rất khác nhau ở mọi nơi. cũng luôn luôn đi theo tôi. – Dudo

+2

Điều này là hoàn toàn chính xác và một chút khó hiểu. 'select_tag' ** sẽ ** chấp nhận tùy chọn' include_blank' nhưng nó sẽ KHÔNG hiển thị văn bản bạn truyền vào như giá trị cho tùy chọn đó. Bạn cần sử dụng 'prompt' cho điều đó. Cảm ơn @Georgi! –

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