Ajax调用从rails中的动作控制器返回错误

时间:2013-10-19 17:40:30

标签: ruby-on-rails ajax ruby-on-rails-3

关于更改下拉列表值我正在尝试填充其他下拉列表值。

这里我在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"

(在萤火虫中检查)

3 个答案:

答案 0 :(得分:1)

错误发生在ajax网址中,在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);
      }

     });
  });

答案 1 :(得分: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

答案 2 :(得分:0)

我想你忘记了网址中“约会”字样的“s”:“/ appointment / getdata”,所以试着像这样添加“s”:

$.ajax({
  url: "/appointments/getdata",
...
...