我试图实现一个动态选择菜单,用户选择一个主题,然后该主题中的学生列表将出现在下拉列表中。显然我做错了什么。我怀疑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可能因某些原因无法工作。谢谢!
答案 0 :(得分:0)
忘了我问道,我刚刚开始工作了。使用id是最好的方法。 :D一切都相同但有id而不是。我觉得很傻。