ROR:动态选择框,jQuery无效或代码错误

时间:2015-09-01 21:08:51

标签: javascript jquery html ruby-on-rails

我试图实现一个动态选择菜单,用户选择一个主题,然后该主题中的学生列表将出现在下拉列表中。显然我做错了什么。我怀疑jQuery可能无法在我的应用程序中运行。我正在使用Rails 4.2

查看:

<div class="field">
  <%= f.label :classmodule %><br>
  <%= f.collection_select :subject_type, Classmodule.order(:subject), :id, :subject, include_blank: true %>
</div>

<div class="field">
  <%= f.label :studentname %><br>
  <%= f.grouped_collection_select :studentname, Classmodule.order(:subject), :students, :subject, :id, :s_alias, include_blank: true %>
</div>

协会:

class Note < ActiveRecord::Base

    belongs_to :user
    belongs_to :classmodule
    belongs_to :student

class Student < ActiveRecord::Base
    has_many :notes
    belongs_to :classmodule
end

class Classmodule < ActiveRecord::Base
    has_many :notes
    has_many :students
end

只是为了解释该表单是用于notes表。

我的jQuery(我关注railscast 88)。我很新鲜,所以请原谅我,如果我在这里错过了一些愚蠢的话! Notes.coffee:

jQuery -> 
   students = $('#note_studentname').html()
   $('#note_subect_type').change ->
     classmodule = $('#note_subject_type :selected').text()
     options = $(students).filter("optgroup[label='#{classmodule}']").html()
     if options 
      $('#note_studentname').html(options)
     else
      $('#note_studentname').empty()

我不确定需要提供多少信息。模式

create_table "classmodules", force: :cascade do |t|
    t.datetime "created_at",     null: false
    t.datetime "updated_at",     null: false
    t.string   "subject"
    t.integer  "classmodule_id"
  end

 create_table "students", force: :cascade do |t|
    t.string   "email"
    t.string   "student_id"
    t.string   "student_forename"
    t.string   "student_surname"
    t.string   "s_alias"
    t.datetime "created_at",       null: false
    t.datetime "updated_at",       null: false
    t.integer  "classmodule_id"
  end

Application.js:

//= require jquery
//= require jquery_ujs   
//= require turbolinks
//= require bootstrap
//= require list
//= require list.fuzzysearch
//= require_tree .

Application.html.erb


<head>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= stylesheet_link_tag    'application', 'http://fonts.googleapis.com/css?family=raleway:400, 700' %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <link href="styles/ihover.css" rel="stylesheet">
  <%= javascript_include_tag 'jquery' %>
  <%= csrf_meta_tags %>

</head>

页面显示正常但从第一个下拉列表中选择没有任何反应。

如果有人发现我在jQuery或其他地方做错了什么,请欣赏任何建议!我担心jQuery可能因某些原因无法工作。谢谢!

1 个答案:

答案 0 :(得分:0)

忘了我问道,我刚刚开始工作了。使用id是最好的方法。 :D一切都相同但有id而不是。我觉得很傻。