将额外的html属性添加到R​​ails collection_select

时间:2012-03-05 21:06:47

标签: ruby-on-rails ruby forms

我正在使用

f.collection_select :country_id, Country.all, :id, :name)

生成

<select name="user[country_id]" id="user_country_id">       
 <option value="1">Canada</option>
 <option  value="2">United Kingdom</option>
 <option  value="3" >United States</option>
</select>

我想在select中包含prov-val和code-val属性,这样我就可以动态更新省标签:

<select name="user[country_id]" id="user_country_id">     
<option prov-val="Province / Territory" code-val="Postal Code" value="1">Canada</option>
<option prov-val="County" code-val="Postcode"  value="158">United Kingdom</option>
<option prov-val="State" code-val="ZIP Code"  value="2" >United States</option>

这可以使用collection_select吗?

2 个答案:

答案 0 :(得分:10)

不确定是否可以使用collection_select,但我认为使用select可以满足您的需求:

<%= f.select :country_id, Country.all.map {|c| [c.name, c.id, {:'prov-val' => c.prov_val, :'code-val' => c.code_val}]} %>

这假设您的country对象具有prov_val和code_val字段。

答案 1 :(得分:3)

您不应该从视图中直接调用模型。

最好使用实例变量:

<%= f.select :country_id, @countries.map {|c| 
  [c.name, c.id, {:'prov-val' => c.prov_val, :'code-val' => c.code_val}]
} %>