Rails select_tag - 设置include_blank并选择默认值

时间:2011-06-24 03:17:58

标签: ruby-on-rails-3 forms

select_tag :country_id, options_from_collection_for_select(Country.order('priority desc, name asc'), "id", "name"), { :prompt => 'Select a country', :include_blank => 'None' } %> 

按预期执行,:include_blank => 'None'除外。呈现空白选项。像这样:

<option value=""></option>

其次,使用select_tag。如何指定默认值。例如,如果我需要选择框来选择特定国家/地区。我尝试添加:selected => Country.first无效:

<%= select_tag :country_id, options_from_collection_for_select(Country.order('priority desc, name asc'), "id", "name"), { :prompt => 'Select` a country', :include_blank => 'None', :selected => Country.first } %>

以上始终选择“选择国家/地区”。

为什么?

1 个答案:

答案 0 :(得分:3)

空白值

我不认为这对其他帖子有足够的重视:

include_blank上的

select_tag不尊重传递给它的字符串。它只会将其解释为true / false值。

要为select_tag设置特定字符串的空白值,您需要使用prompt

选定值

由于select_tag不属于某个对象(select的方式),因此您需要将所选值指定为选项的一部分。将所选值传递到options的{​​{1}}参数。

在您的情况下,您使用select_tag来帮助生成这些选项。此方法采用第四个参数指定应选择哪个选项。

options_from_collection_for_select