У меня есть раскрывающийся список со списком валют. Чтобы сделать его проще для пользователей, я хочу изменить выбранное по умолчанию значение в раскрывающемся списке, когда страница загружается на основе страны-пользователя (для этого будет использовать жемчужину geoip). Поэтому я буду писать этот рубиновый код:
$country = GeoIp.geolocation(request.remote_ip, :precision => :country)
Как изменить выбранное значение выпадающего списка на основе значения $ country? Должен ли я делать это с помощью Javascript? или с помощью рельсов? И для чего это код?
Все, что вам нужно сделать, это установить элемент <option>
который имеет страну как selected='selected'
. Как вы это делаете, это зависит от того, как вы создали список опций.
Например, options_for_select
принимает выбранный элемент как 2-й аргумент.
options_for_select(['Alpha', 'Beta', 'Gamma'], 'Beta')
# => <option value="Alpha">Alpha</option>
# => <option value="Beta" selected="selected">Beta</option>
# => <option value="Gamma">Gamma</option>
Можете ли вы попробовать что-то вроде этого:
<%= 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>
Обратите внимание на использование выбранного здесь.
Предполагая, что ваша переменная country $ имеет соответствующий код страны в вашей таблице Country, вы можете сделать что-то вроде этого.
select_tag "currency", options_from_collection_for_select(Country.all, "country_code", "currency_name", $country)