2011-11-25 94 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是辅助方法。