我正在尝试实施一个选项菜单,允许用户选择国家/省/州。我正在使用包含所有国家和大多数省/州的数组的帮助方法。我在表单中使用辅助方法,选项选项可以预先填充下拉菜单。代码如下。
<%= f.label :Country %>
<%= f.select :country, options_for_select(country, "Canada")%>
<%= f.label :State_or_Province %>
<%= f.select :states, options_for_select(states, "Ontario") %>
方法country
和states
在帮助文件中定义。两者的代码如下所示。
module StatesHelper
def states
states_array = %w{
Alabama
Alaska
Arizona
Arkansas
California
Colorado
Connecticut
Delaware
.....
}
states_array.sort_by{ |e| e.downcase }
end
end
module CountriesHelper
def country
country_array = [
"Afghanistan",
"Aland Islands",
"Albania",
"Algeria",
"American Samoa",
"Andorra",
"Angola",
....
]
country_array.sort_by{ |e| e.downcase }
end
end
这工作得非常好。但是,我希望州/省的下拉菜单更具活力。我想要API,当用户点击“加拿大”时,加拿大各省出现,同样当用户点击“美国”时,美国各州出现。
我只用美国各州和加拿大各省制作了两个辅助文件。在记分板表单中,我尝试了if / else语句。代码如下。
<% if f.select :country, options_for_select(country, "Canada") %>
<%= f.label :State_or_Province %>
<%= f.select :states, options_for_select(canadian_provinces, "Ontario") %>
<% end %>
if和else语句不正确。方法canadian_provinces
和Canada
都是数组。我想写一下,“如果从该阵列中选择加拿大然后显示加拿大省”。我想和美国做同样的事情。我知道如果我保存数据,那么我可以使用方法进行比较。但是,在保存数据之前,我不确定如何在表单中执行此操作。我很确定你必须在客户端这样做,只是不确定正确的工具是如何或什么。一如既往,任何帮助将不胜感激!谢谢!