Rails Jquery/Ajax更改事件未在Rails 3.2上执行
更新 大家好,我是Ajax和jquery新手,请帮助。我就是看不出这个片段有什么问题。基本上在我看来,当用户从下拉选择框中选择一门课程时,应该加载一批属于该课程的学生。目的是为这批学生创建一个考试。 以下是我的create_考试视图中下拉列表的代码:Rails Jquery/Ajax更改事件未在Rails 3.2上执行,jquery,ruby-on-rails-3.2,Jquery,Ruby On Rails 3.2,更新 大家好,我是Ajax和jquery新手,请帮助。我就是看不出这个片段有什么问题。基本上在我看来,当用户从下拉选择框中选择一门课程时,应该加载一批属于该课程的学生。目的是为这批学生创建一个考试。 以下是我的create_考试视图中下拉列表的代码: <%= select_tag :course_id, options_for_select( Course.find(:all,:select=>"code,id").collect{|c| [c.code,c.id]}), :dat
<%= 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")} %>
结束
结束
我使用以下javasscript创建了文件“update_batch.js.erb”:
$update\u batch.html
My application.js文件包含jquery,它有望触发select box的onchange事件:
// 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'
})
});
})
正在填充下拉选择框,当我选择一个课程时,应该呈现“更新批处理”部分。从下面显示的我的终端输出中,可以清楚地看到正在渲染部分:
ExamController处理将_批更新为JS
参数:{filter=>course,course\u id=>1}
批次加载0.2ms选择批次。*从批次中,batches.is_deleted='f'和batches.is_active='t'和batches.course_id为空
呈现考试/\u更新\u batch.html.erb 0.6ms
呈现检查/更新\u batch.js.erb 2.1ms
在6ms视图中完成200 OK:4.5ms |活动记录:0.2ms
问题是网页上没有显示此部分内容。我的问题是:我的jquery代码有什么问题吗?这里有必要吗?为什么网页上没有显示部分内容?
_update_batch partial如下所示:
<% @batch.each do |batch| %>
<%= link_to batch.course.full_name, batch_exam_groups_path(batch) %> : <%= batch.full_name %>
<% end %>
Am位于Rails 3.2.8上,jquery Rails已正确安装。我哪里会出错?
Thanx我们将非常感谢您的帮助。我认为您不能使用带有选项的data remote进行选择,也许我错了。当我需要在select中提交值时,我会执行以下操作:
$("#select_id").change(function() {
var id = $(this).val();
$.ajax({
url: "/url_here",
type: "GET",
data: {"course_id": id},
dataType: "choose_the_dataType"
success: function(data) {
//do something here
}
});
});
谢谢你的快速回复。也许为了让你们了解情况,我编辑了这个问题。
$("#select_id").change(function() {
var id = $(this).val();
$.ajax({
url: "/url_here",
type: "GET",
data: {"course_id": id},
dataType: "choose_the_dataType"
success: function(data) {
//do something here
}
});
});