2011-11-25 165 views
1

我是ror的新人。在軌在ror中選擇選項標籤?

<%= select_tag(:city_id, '<option value="1">Lisbon</option>,<option value="2">Madrid</option>' %> 

選項選擇標籤產生這個網站:

<select id="city_id" name="city_id"> 
    <option value="1">Lisbon</option> 
<option value="2">hjkLisbon</option> 
</select> 

和選項選擇標籤

<%= select_tag(:city_id, options_for_select([['Lisbon', 1], ['Madrid', 2]])) %> 

產生這個網站:

<select id="city_id" name="city_id"> 
<option value="1">Lisbon</option> 
<option value="2">Madrid</option> 
</select> 

第二選項選擇標記我得到的下拉選項,但在第一個我沒有得到它,只有下拉是有第一個,但沒有選擇。 任何人都可以請解釋我爲什麼這樣?

回答

2

如果你只有這兩個城市,你可以使用普通的HTML

<select id="city_id" name="city_id"> 
<option value="1">Lisbon</option> 
<option value="2">Madrid</option> 
</select> 

如果取從你的數據庫的城市,你可以做

select_tag ‘city_id’, options_for_select(@cities.collect{ |u| [u.name, u.id] }) 

這將產生類似:

<select id="city_id" name="city_id"> 
    <option value="1">Lisbon</option> 
    <option value="2">Madrid</option> 
</select> 

不要害怕使用html。最簡單的解決方案是最好的解決方案。

+0

因爲我是新的rails,所以我想知道爲什麼第一個代碼不起作用,即使產生相同的html。 –

+0

rails方法對於如何傳遞選項非常重要。 select_tag是一個rails方法。將選項發送給select_tag方法的第一種方法不正確。 –

0

參考this

變化

<%= select_tag(:city_id, '<option value="1">Lisbon</option>,<option value="2">Madrid</option>' %> 

<%= select_tag(:city_id, '<option value="1">Lisbon</option>,<option value="2">Madrid</option>') %> 

您不關閉選擇標籤即)缺少

-1

,如果你真的想保持選擇的國家編輯頁面上的名稱然後..

<%= f.select :country, (country_name), :selected => @model.country %> 

其中country_name是輔助方法。