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"

(在萤火虫中检查)

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 请求中您正在使用“约会/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 中“约会”一词的“s”:“/appointment/getdata”,所以尝试像这样添加“s”:

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