2010-11-11 23 views
7

Tôi có những điều sau đây mà kết quả đầu ra một hộp chọn:Rails - Radio Buttons cho bộ sưu tập bộ

<%= f.label :request_type_id %><br /> 
<% requestTypes = RequestType.all %> 
<%= f.collection_select :request_type_id, requestTypes, :id, :title, :prompt => true %> 

phương pháp đường ray là gì để Radio Buttons thay vì đầu ra?

Trả lời

15

Đối với các nút radio, bạn phải tự lặp lại và xuất ra mọi nút radio và nhãn của nó. Nó thực sự dễ dàng trong thực tế.

<% RequestType.all.each do |rt| %> 
    <%= f.radio_button :request_type_id, rt.id %> 
    <%= f.label :request_type_id, rt.title %> 
<% end %> 

Hoặc trong haml trong trường hợp nó ưa thích hơn ERB:

- RequestType.all.each do |rt| 
    = f.radio_button :request_type_id, rt.id 
    = f.label :request_type_id, rt.title 
+0

Cảm ơn, điều đó đã hiệu quả nhưng tôi đã cần phải làm việc wit h nhãn FOR để làm cho nó khớp với nút radio. – AnApprentice

+0

@AnApprentice - Đã làm một số tìm kiếm cho cùng một điều và tìm thấy câu trả lời này: http://stackoverflow.com/a/4921732/247763 – derekerdmann

+0

Bất kỳ ý tưởng làm thế nào để làm điều này, nhưng với các giá trị cố định. Tôi có nghĩa là thay vì 'Model..all.each', bạn có một cái gì đó như' cho tôi trong 0..5'? – Sebastialonso

0

Tôi không nghĩ rằng có một tùy chọn mặc định trong Rails để đạt được điều này; may mắn bổ sung là bạn của bạn và tôi nghĩ rằng những gì bạn muốn là rất dễ dàng với simple_form.

0

Dưới đây là nút radio của bạn, bạn có thể dưới đây là ví dụ: -

<%= f.radio_button:request_type_id,'1',{"id","title"} %>id 
<%= f.radio_button:request_type_id,'2',{"id","title"} %>title 
1

Sử dụng simple_form đá quý:

Trong bộ điều khiển:

@request_types = RequestType.all 

Trong một hình thức:

<%= f.association :request_type, collection: @request_types, as: :radio_buttons %> 
0

Một ví dụ làm thế nào để sử dụng f.collection_radio_buttons với một Enum như một bộ sưu tập:

<%= f.collection_radio_buttons :reason, MyEnum.statuses.map {|k,v| [k,k]}, :first, :last do |b| %> 
    <div class='your-class'> 
    <%= b.radio_button %> 
    <%= b.label %> 
    </div> 
<% end %> 
Các vấn đề liên quan