[英]Rails 4: ajax call to controller action returning 404 not found
好的,我大概需要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 def
內添加puts
,但這些未打印在日志中。 這是路由問題嗎?
感謝您的幫助。
我曾經有這個問題
最后,我發現問題出在過濾器中
您的控制器中可以有任何文件管理器,您想將其發布以尋求幫助嗎?
問題在於,即使沒有任何驗證或身份驗證,也不允許控制器中的此類ajax方法通過。 您需要查看控制器oferts_controller.rb或application_controller.rb 。 必須有一些before_filter替代將其重定向到404。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.