我在视图中有以下内容显示包含国家/地区的选择框:
@countries = {'United States' => 'US', 'France' => 'FR'}
<%= select_tag 'countries',
options_for_select(@countries.to_a) %>
它工作正常。现在,在提交表单后出现错误的情况下,文本字段中先前输入的所有值都会再次显示(因此无需重新输入),但选择框将重置为其默认值。
任何想法我应该包括哪个参数,以便在发生错误时,选择框中的值保持不变。
答案 0 :(得分:1)
您在哪里存储此值?如果将其分配给某个模型,那么您的表单应如下所示:
<% form_for @my_object do |f| %>
# some fields
<%= f.select 'country', options_for_select(@countries.to_a) %>
# ...
<% end %>
country
应该是您在模型中存储国家/地区的字段名称。
如果你想用select_tag
(就像你的例子)那样做,那么你应该传递给options_for_select
另一个参数:
select_tag 'countries', options_for_select(@countries.to_a, params[:countries])
params[:countries]
应存储当前所选国家/地区。