2010-05-05 38 views
6

Tôi cần tạo một menu chọn có giá trị Mặc định trên danh sách <options>. Đây là cách tôi cần nó trông như thế nào.Ruby on rails: Chọn menu tùy chọn với thuộc tính giá trị mặc định

<select name="menu[parent_id]" id="menu_parent_id"> 
<option value="0">==None==</option> 
<option value="34">TEST</option> 
</select> 

Hiện nay tôi sử dụng select helper này trong hình thức của tôi

<%= f.select(:parent_id, @parent_menus.collect {|p| [ p.name, p.id ] }, {:include_blank => '==None=='})%> 

mã trên sản xuất này; (value="")

<select name="menu[parent_id]" id="menu_parent_id"> 
<option value="">==None==</option> 
<option value="34">TEST</option> 
</select> 

Có ai ở đây có thể chỉ cho tôi một cách để thêm value="0" vào danh sách lựa chọn?

Trả lời

9
<%= f.select(:parent_id, [["==None==", 0]] + @parent_menus.collect {|p| [ p.name, p.id ] }) %> 
+0

Dưới đây là những gì tôi nhận được cho rằng, ' == Không == ' Thực ra tôi đang tìm một cái gì đó như thế này ' ' – randika

+0

Xin lỗi, lỗi của tôi. Tôi quên một []. Kiểm tra cập nhật của tôi. –

+0

Hoan hô nó hoạt động! cảm ơn một loạt Simone. Tôi sẽ làm điều này như là câu trả lời. – randika

1

Hãy thử

<%= f.select(:parent_id, options_for_select(["==None==", 0] + @parent_menus.collect {|p| [ p.name, p.id ] }, 0)) %> 
0

Tôi không biết điều này là Ruby bằng cách này hay không Nhưng điều này sẽ làm việc definietly

<%= f.select(:parent_id, "<option value='0'>Please select</option>"+options_for_select(@parent_menus.collect {|p| [ p.name, p.id ] }))%> 

chỉnh sửa. Để chọn trước theo giá trị lưu trong cơ sở dữ liệu tôi giả sử @user là đối tượng của bạn chứa giá trị cơ sở dữ liệu cho ví dụ sau.

<%= f.select(:parent_id, "<option value='0'>Please select</option>"+options_for_select(@parent_menus.collect {|p| [ p.name, p.id ] }, @user.id))%> 
+0

hãy kiểm tra câu trả lời đã chỉnh sửa của tôi hy vọng rằng sẽ giúp. – Salil

1

Nghĩ rằng tôi sẽ thêm này cho bất cứ ai tìm cách để làm một mặc định giá trị được lựa chọn là một trong những đối tượng trong danh sách thả xuống, như trái ngược với một giá trị 'không'. tức là, bạn đang chỉnh sửa biểu mẫu có giá trị trước đó được chọn và bạn không muốn mất giá trị trước đó trên trang chỉnh sửa của mình:

Giả sử bạn có một loạt cha mẹ được giữ trong @parents và biểu mẫu của bạn bị ràng buộc đến một đối tượng gọi @my_messed_up_family, và @my_messed_up_family có một 'cha':

= f.label :parent_id, "Choose which of your parents is your father? 

= f.select :parent_id, options_from_collection_for_select(@parents.sort_by {|n| n.name}, "id", "name", :selected=>@my_messed_up_family.father.id) 
Các vấn đề liên quan