Я не уверен, что вы имеете в виду под "не предоставленными данными". При использовании вашего метода представление формы по-прежнему должно проходить по всем странам и отображать опцию для выбора для каждой из них.
<select id="user_country" name="user[country]">
<option value="US">United States</option>
<option value="CA">Canada</option>
<option value="ET">Etcetera</option>
Если, однако, вы поместили выделение в кэш фрагмента, то при первом отображении формы после последнего развертывания параметры выбора будут отображаться и затем кэшироваться в отдельный файл в / tmp / cache. Затем при каждом последующем загрузке формы этот кэшированный файл будет использоваться рельсами, как если бы он был частичным и вставлялся в форму.
<% form_for @user do |form| %>
<% cache('user_countries_selector') do %>
<% form.select :country, Country.order("name asc").all.collect{|country [country.name, country.name]}
<% end %>
<% etc, etc, etc %>
<% end %>
хотя на практике я бы, вероятно, переместил код Country.order...
во вспомогательный метод. При использовании этого метода кэширование списка стран в @@ СТРАНАХ совершенно не требуется.
Если вам нужно отобразить выбранную страну в других формах, вы должны передать другой ключ cache()
, поскольку идентификатор и имя отображаемого тега выбора будут зависеть от формы.