更新大家好,我是 Ajax 和 jquery 的新手,请帮忙。我只是看不出这个片段的问题。基本上在我看来,当用户从下拉选择框中选择一门课程时,应该加载一批属于该课程的学生。目的是为这批学生创建一个考试。这是我的 create_exam 视图中下拉列表的代码:
<%= select_tag :course_id,
options_for_select(
Course.find(:all,:select=>"code,id").collect{|c| [c.code,c.id]}),
:data => { :remote => true, :url => url_for(:controller => "exam",
:action => "update_batch",
:filter =>"course")} %>
我的考试控制器中的 update_batch 操作如下所示: def update_batch @batch = Batch.find_all_by_course_id(params[:course_name], :conditions => { :is_deleted => false, :is_active => true })
respond_to do |format|
format.html
format.js
结尾
结尾
我使用以下 javasscript 创建了文件 'update_batch.js.erb': $("#update_batch").html("<%= escape_javascript(render('exam/update_batch')) %>")
我的 application.js 文件包含希望触发选择框的 onchange 事件的 jquery:
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
$(function($) {
$("#course_id").change(function() {
$.ajax({
url: '<%=url_for :controller => 'exam',:action => 'update_batch' %>',
type: 'GET',
data: 'course_id=' + this.value,
dataType: 'script'
})
});
});
下拉选择框正在填充,当我选择一门课程时,应该呈现“update_batch”部分。从下面显示的终端输出中,很明显部分正在呈现:ExamController#update_batch 作为 JS 参数处理:{"filter"=>"course", "course_id"=>"1"} Batch Load (0.2ms) SELECT "batches".* FROM "batches" WHERE "batches"."is_deleted" = 'f' AND "batches"."is_active" = 't' AND "batches"."course_id" IS NULL 渲染考试/_update_batch.html .erb (0.6ms) 渲染的考试/update_batch.js.erb (2.1ms) 在 6ms 内完成 200 OK (Views: 4.5ms | ActiveRecord: 0.2ms)
问题是这部分没有显示在网页上。我的问题是:我的 jquery 代码有什么问题吗,这里甚至有必要吗?为什么部分没有显示在网页上?_update_batch 部分如下所示:
<% @batch.each do |batch| %>
<%= link_to batch.course.full_name, batch_exam_groups_path(batch) %> : <%= batch.full_name %>
<% end %>
我在 Rails 3.2.8 上,并且 jquery-rails 已正确安装。我哪里会出错?感谢您的帮助,我们将不胜感激。