#88动态选择菜单(修订版)不适用于rails

时间:2014-02-18 09:54:33

标签: javascript jquery ruby-on-rails coffeescript

我遇到了执行问题(在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),但没用。

请帮忙。

2 个答案:

答案 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 )