0

ドロップダウン値の変更時に、他のドロップダウン リスト値を入力しようとしています。

ここで、routes.rb に新しいアクションを追加しました。

 resources :appointments do 
    collection do
      get :getdata
    end
  end

これは私のjsコードです:

 $("#appointment_department_id").change(function(){ 
//on change of department dropdown.
    $.ajax({
      url: "/appointment/getdata",
      type: "GET",
      data: {department_id: $(this).val()},
      success: function(data){
        alert(data);
      }
       error: function(data){
        alert(data);
      }

     });
  });

コントローラーファイルでの私のアクションは次のとおりです。

   def getdata
     @dept_id = params[:department_id]
     department_name  = @dept_id 
      @all_doctors = User.all;  #will write my custom query later. 
  end

しかし、このアクションを呼び出すと、エラーが返されます:

"NetworkError: 404 Not Found  - http://localhost:3000/appointment/getdata?department_id=5"

(firebugでチェック)

4

3 に答える 3

1

respond_toあなたのコントローラーはどこにありますか?

Ajax リクエストを送信する場合は、次のように、respond_to "JS" または "JSON" を定義する必要があります。

def getdata
    respond_to do |format|
       format.js 
    end
end

次のようにすることもできます。

Class Controller 
    respond_to :html,:js, :json

    def getdata
      respond_with(@custom_vars)
    end

end
于 2013-10-20T11:45:27.973 に答える
1

エラーは ajax url にあります。ajax リクエストでは「appointment/getdata」を使用していますが、ルートでは予定を定義しています。

だから使う

$("#appointment_department_id").change(function(){ 
//on change of department dropdown.
    $.ajax({
      **url: "/appointments/getdata",**
      type: "GET",
      data: {department_id: $(this).val()},
      success: function(data){
        alert(data);
      }
       error: function(data){
        alert(data);
      }

     });
  });
于 2013-10-19T18:40:09.393 に答える
0

URL「/appointment/getdata」の「予定」という単語の「s」を忘れていると思いますので、次のように「s」を追加してみてください。

$.ajax({
  url: "/appointments/getdata",
...
...
于 2013-10-20T12:13:33.973 に答える