我有一个带有货币列表的选择下拉框。为了使用户更容易,我想根据用户国家/地区加载页面时更改下拉菜单中的默认选择值(将为此使用geoip gem)所以我将编写这个 ruby 代码:
$country = GeoIp.geolocation(request.remote_ip, :precision => :country)
如何根据 $country 值更改下拉列表框的选定值?我应该用 Javascript 来做吗?或使用rails表单助手?它的代码是什么?
我有一个带有货币列表的选择下拉框。为了使用户更容易,我想根据用户国家/地区加载页面时更改下拉菜单中的默认选择值(将为此使用geoip gem)所以我将编写这个 ruby 代码:
$country = GeoIp.geolocation(request.remote_ip, :precision => :country)
如何根据 $country 值更改下拉列表框的选定值?我应该用 Javascript 来做吗?或使用rails表单助手?它的代码是什么?
您需要做的就是将<option>
包含国家/地区的元素设置为selected='selected'
. 你如何做到这一点取决于你如何构建选项列表。
例如,options_for_select
将所选元素作为第二个参数。
options_for_select(['Alpha', 'Beta', 'Gamma'], 'Beta')
# => <option value="Alpha">Alpha</option>
# => <option value="Beta" selected="selected">Beta</option>
# => <option value="Gamma">Gamma</option>
假设您的 $country 变量在 Country 表中具有匹配的国家/地区代码,您可以执行类似的操作。
select_tag "currency", options_from_collection_for_select(Country.all, "country_code", "currency_name", $country)
你可以尝试这样的事情:
<%= f.select :someobj, options_for_select({ "Basic" => "$20", "Plus" => "$40" }, $country ) %>
它会给你:
<select name="someobj">
<option value="$20">Basic</option>
<option value="$40" selected="selected">Plus</option>
</select>
请注意此处使用 Selected。