Rails:动态选择菜单

时间:2015-01-05 14:20:36

标签: jquery ruby-on-rails ruby-on-rails-4 coffeescript

我正在按照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它也有同样的错误。

1 个答案:

答案 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列中选择。