簡體   English   中英

Rails 4:找不到對控制器操作的ajax調用,返回404

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM