我遇到了执行问题(在railscast剧集中动态选择菜单),因为它无法正常工作。
(状态)菜单提供所有可用选项(国家/地区)。
我一步一步地按照视频搜索了可用的解决方案但没用,但有一个问题我无法理解。
coffescript(people.js.coffee)
jQuery ->
states = $('#person_state_id').html()
$('#person_state_id').parent().hide()
$('#person_country_id').change ->
country = $('#person_country_id :selected').text()
escaped_country = country.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1')
options = $(states).filter("optgroup[label='#{escaped_country}']").html()
console.log(options)
if options
$('#person_state_id').html(options).parent().show()
else
$('#person_state_id').empty().parent().hide()
new.html.erb
<%= form_for @person do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :country_id %><br />
<%= f.collection_select :country_id, Country.order(:name), :id, :name, include_blank: true %>
</div>
<div class="field">
<%= f.label :state_id, "State or Province" %><br />
<%= f.grouped_collection_select :state_id, Country.order(:name), :states, :name, :id, :name, include_blank: true %>
</div>
<div class="actions"><%= f.submit %></div>
<% end %>
我还找到了一个用(gem'jquery-turbolinks')更新Gemfile的解决方案 和application.js文件(// = require jquery.turbolinks),但没用。
请帮忙。
答案 0 :(得分:0)
我认为您需要从此行中删除单引号:
options = $(states).filter("optgroup[label='#{escaped_country}']").html()
使其成为
options = $(states).filter("optgroup[label=#{escaped_country}]").html()
答案 1 :(得分:0)
试着用这个:
= f.select :country_id, grouped_options_for_select( some_options )