0

更新 こんにちは、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")} %>

私の Exam コントローラーの update_batch アクションを以下に示します。

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」パーシャルがレンダリングされます。以下に示す私の端末出力から、パーシャルがレンダリングされていることが明らかです: Processing by ExamController#update_batch as JS Parameters: {"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) 200 OK を 6ms で完了 (ビュー: 4.5ms | ActiveRecord: 0.2ms)

問題は、このパーシャルが Web ページに表示されないことです。私の質問は次のとおりです。私のjqueryコードに何か問題がありますか?ここでも必要ですか? パーシャルが Web ページに表示されないのはなぜですか? _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 が適切にインストールされています。どこで間違っている可能性がありますか?あなたの助けに感謝します。

4

1 に答える 1

0

options_for_select で data-remote を使用できるとは思いません。おそらく私は間違っています。選択で値を送信する必要があるときは、次のようにします。

$("#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 
    }
  });
});
于 2013-03-23T14:17:51.863 に答える