【问题标题】:Rails Jquery/Ajax change event not executed on Rails 3.2Rails Jquery/Ajax 更改事件未在 Rails 3.2 上执行
【发布时间】:2013-03-12 08:55:38
【问题描述】:

更新 大家好,我是 Ajax 和 jquery 的新手,请帮忙。我只是看不出这个sn-p的问题。基本上在我看来,当用户从下拉选择框中选择一门课程时,应该加载一批属于该课程的学生。目的是为这批学生创建一个考试。 这是我的 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("")

我的 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"} 批量加载 (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) 在 6 毫秒内完成 200 次 OK(查看次数:4.5 毫秒 | ActiveRecord:0.2 毫秒)

问题是这部分没有显示在网页上。我的问题是:我的 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。我哪里会出错? 感谢您的帮助,我们将不胜感激。

【问题讨论】:

    标签: jquery ruby-on-rails-3.2


    【解决方案1】:

    我认为您不能将 data-remote 与 options_for_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 
        }
      });
    });
    

    【讨论】:

    • 非常感谢您的快速回复。也许为了让你了解我已经编辑了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多