我要做的是显示国家的2个字母的缩写代码,即' US'。
选择国家后,我需要显示其州或省。 但我遇到了问题。
我的代码看起来像
<%= f.select :country_code, region_options_for_select(only_us_and_france) %>
并在帮助器中定义:
def only_us_and_france
Carmen::Country.all.select{|c| %w{US FR}.include?(c.code)}
end
我使用的是Rails 4.1.0。
答案 0 :(得分:0)
我通过以下方式解决了这个问题:
第1步:生成迁移
rails g migration addStateCodeFieldToAccounts state_code:string
第2步:在控制器内定义方法
def subregion_options
render partial: 'subregion_select'
end
第3步:在路线中声明
resources :accounts do
collection do
get 'subregion_options'
end
end
第4步:在视图中
<div class="input-control select state_input" data-role="input-control">
<%= f.select :country, region_options_for_select(only_us_and_france) %>
</div>
<div class="input-control select state_input" data-role="input-control">
<%= render partial: 'subregion_select', locals: {parent_region: f.object.country} %>
</div>
第5步:制作部分subregion_select
<div id="account_state_code_wrapper">
<% parent_region ||= params[:parent_region] %>
<% country = Carmen::Country.coded(parent_region) %>
<% if country.nil? %>
<em>Please select a country above</em>
<% elsif country.subregions? %>
<%= subregion_select(:order, :state_code, parent_region) %>
<% else %>
<%= text_field(:order, :state_code) %>
<% end %>
</div>
Step6:在我的js文件中写这个
$('select#account_detail_country').change(function(){
selectWrapper = $('#account_state_code_wrapper')
countryCode = $(this).val()
url = "/account_details/subregion_options?parent_region="+countryCode
console.log(url)
selectWrapper.load(url)
});
是的,它的确有效:)希望这会对你有帮助。