关于更改下拉列表值我正在尝试填充其他下拉列表值。
这里我在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"
(在萤火虫中检查)
答案 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",
...
...