carmen-rails subregion select(加拿大各省和美国各州)

时间:2016-01-22 16:45:07

标签: ruby-on-rails carmen

我有美国各州和地区的下拉列表。我想添加加拿大各省,以便按字母顺序排列整个州/省。

目前我有此代码列出了所有美国州和地区:

= extra_fields.input :province, label: "Franchisee Billing State/Province", input_html: { class: "form-control" } do
    = extra_fields.subregion_select(:province, "US", {prompt: 'Please select a state'}, required: 'region required')

我尝试将subregion_select的第二个参数转换为[" US," CA"],但这会破坏事情。

1 个答案:

答案 0 :(得分:1)

根据我的理解,您正在寻找加拿大省和美国州的联盟,而select字段没有country_select功能。如果我是对的,你可以通过这种方式获得

countries = Carmen::Country.all.select{|c| %w{US CA}.include?(c.code)} # get the countries
# get the subregions of US and CA
subregions = countries.collect {|x| x.subregions }.flatten 

在rails应用程序中

创建辅助方法

def subregions_of_us_and_canada
  countries = Carmen::Country.all.select{|c| %w{US CA}.include?(c.code)}
  # get subregions and sort in alphabetical order  
  countries.collect {|x| x.subregions }.flatten.sort_by(&:name)
end

以表格

调用上述方法
= extra_fields.input :province, as: :select, collection: subregions_of_us_and_canada, label_method: :name, value_method: :code, label: "Franchisee Billing State/Province", input_html: { class: "form-control" }, prompt: 'Please select a state'

我希望这会有所帮助