2013-09-06 17 views
5

Giúp tôi vui lòng giải quyết vấn đề với collection_select. Khi tôi sử dụng:Rails collection_select giá trị thiết lập cho bao gồm

collection_select(:service, :carmake_id, Carmake.all, :id, :name, include_blank: 'Any') 

HTML là:

<select id="service_carmake_id" name="service[carmake_id]"> 
    <option value="">Any</option> 
    <option value="12">Audi</option> 
    <option value="16">Porsche</option> 
    <option value="17">VW</option> 
</select> 

Nhưng tôi cần value = "0" cho "Bất kỳ" tùy chọn. Có thể không?

Cập nhật:

select(:service, :carmake_id, [['Any', 0]] + Carmake.all.collect { |p| [p.name, p.id]}) 

giúp tôi, nhưng có railsway? Hay tôi hiểu nhầm điều gì đó?

+0

Nếu bạn vượt qua '[0, 'Bất kỳ']' thì sao? –

+3

Nhưng tôi nghĩ nó không có ý nghĩa gì cả. Có vẻ như bạn đang yêu cầu giá trị DEFAULT không trống. Trống theo định nghĩa là một giá trị mà sẽ thất bại 'hiện diện' kiểm tra –

+0

@MichaelSzyndel những gì bạn nói là chính xác, Nhưng Liệu anh ta thực sự có thể tìm thấy bất kỳ bản ghi với id '0'. Bởi vì chắc chắn lựa chọn này là một phần của một số hình thức. Vì vậy, Whats nhập điểm '0' vào bất kỳ trường id carmake_id nào. –

Trả lời

9

này có thể làm việc:

options = Carmake.all.unshift Carmake.new(id: 0, name: 'Any') 
collection_select(:service, :carmake_id, options, :id, :name, include_blank: 'Any') 

Mặc dù tôi đã không kiểm tra tiết kiệm/cập nhật trong hành động.