好的,我喜欢1小时试图解决这个问题......
我在我的oferts_controller.rb中有这个动作
def update_categories
@categories = Category.children_of(Category.find(params[:categories]))
respond_to do |format|
format.js
end
end
这就是我在routes.rb中所拥有的。
get 'oferts/update_categories', as: 'update_categories'
这就是我在ajax调用中的内容
$ ->
$(document).on 'change', '#categories_parents_select', (evt) ->
$.ajax 'update_categories',
type: 'GET'
dataType: 'script'
data: {
categories: $("#categories_parents_select option:selected").val()
}
error: (jqXHR, textStatus, errorThrown) ->
console.log("AJAX Error: #{textStatus}")
success: (data, textStatus, jqXHR) ->
console.log("Dynamic country select OK!")
更新了update_categories操作作为JavaScript响应,该应用程序位于app / views / oferts / update_categories.js.coffee中
$("#categories_select").empty()
.append("<%= escape_javascript(render(:partial => @categories)) %>")
在我尝试执行ajax后,我在日志中得到了这个
Started GET "/oferts/update_categories?categories=3&_=1427927753744" for 127.0.0.1 at 2015-04-01 17:36:01 -0500
Processing by OfertsController#update_categories as JS
Parameters: {"categories"=>"3", "_"=>"1427927753744"}
Rendered public/404.html (0.6ms)
Completed 404 Not Found in 38ms (Views: 36.8ms | ActiveRecord: 0.0ms)
如果您发现它甚至没有进入控制器操作,我尝试在控制器的update_categories puts
内添加def
,但这些不会打印在日志中。这是路由问题吗?
谢谢你的帮助。
答案 0 :(得分:2)
我曾经遇到过这个问题
最后,我发现问题出在过滤器
中你的控制器中是否有任何文件管理器,你想发帖寻求帮助吗?
答案 1 :(得分:0)
即使没有任何验证或身份验证,也存在不允许控制器中的此类ajax方法通过的问题。您需要在控制器中查看 oferts_controller.rb或application_controller.rb 。必须有一些 before_filter ,而是将其重定向到404.
由于