我正在按照railscast#88动态选择菜单的教程。我在jquery中遇到了一个错误。我不熟悉jquery我只是按照他的教程,我已经搜索了错误。
控制台日志错误
Uncaught Error: Syntax error, unrecognized expression: $serviceprovider_service_id :selected
_form.html.erb
<%= form_for(@serviceprovider, html: { :multipart => true }, class: 'form-horizontal') do |f| %>
<div class="form-group">
<label class="client-login-label">Service</label>
<%= f.collection_select(:service_id, Service.all, :id, :service, prompt: 'Choose Service') %>
</div>
<div class="form-group">
<label class="client-login-label">Category</label>
<%= f.grouped_collection_select(:category_id, Service.order(:service), :categories, :service, :id, :name, prompt: 'Choose Category') %>
</div>
<div class="form-group">
<%= f.submit("Register", class: 'btn btn-lg btn-success client-signin-btn') %>
</div>
<% end %>
serviceprovider.js.coffee
jQuery ->
categories = $('#serviceprovider_category_id').html()
$('#serviceprovider_service_id').change ->
service = $('#serviceprovider_service_id :selected').text()
options = $(categories).filter("optgroup[label='#{service}']").html()
if options
$('#serviceprovider_category_id').html(options)
else
$('#serviceprovider_category_id').empty()
这有什么问题。即使我创建了一个自定义的js文件而不是coffeescript它也有同样的错误。
答案 0 :(得分:0)
Pepeng,
我注意到的第一件事是collection_select和grouped_collection_select没有使用块参数f。将它们更改为f.collection_select和f.grouped_collection_select。
第二件事是,当需要分别选择:service_id和:category_id时,代码从collection_select和grouped_collection_select的:serviceprovider列中选择。