我建立一個Rails應用程序,讓用戶對問題和答案,這是嵌套投「無路由匹配」錯誤回答:Rails的嘗試時,通過AJAX
<%= link_to raw('<i class="icon-2x icon-chevron-up"></i>'), vote_question_answer_path(@question, answer, :type => :up), :method => :post %>
但是這個代碼,它應該通過AJAX做同樣的事情:
<%= link_to raw('<i class="icon-2x icon-chevron-up"></i>'), vote_question_answer_path(@question, answer, :type => :up), :remote => true, :method => :post %>
正確地記錄了投票,但隨後提供了以下錯誤:
ActionController::RoutingError at /questions/fugiat-nulla-blue-bottle-raw-denim-fap-sint-butcher-ethical-cosby-sweater-thundercats-distillery-laboris-tofu/answers/6/vote=========================================================================================================================================================================> No route matches {:action=>"vote", :controller=>"answers", :type=>:up, :question_id=>nil, :id=>#<Answer id: 6, body: "Ullamco Pinterest food truck incididunt trust fund,...", user_id: 1, question_id: 10, created_at: "2013-09-10 22:20:40", updated_at: "2013-09-10 22:20:40">}app/views/shared/_vote_answer_arrows.html.erb, line 6
我很困惑 - 是不是兩個發佈到相同的路線?爲什麼一個人工作,另一個人給出了路由錯誤?
我認爲這個問題與嵌套路由有關,因爲我對這些問題有幾乎相同的代碼,並且AJAX路由在那裏工作。
編輯:按照要求,這裏是相關線路:
resources :questions do
member { post :vote }
resources :answers do
member { post :vote }
end
end
而且respond_to代碼做|格式|
respond_to do |format|
format.html{ redirect_to :back, :flash => { :success => 'Thank you for voting!' }}
format.js {}
end
這裏是螢火蟲的AJAX錯誤信息/ URL:
"NetworkError: 500 Internal Server Error - http://localhost:3000/questions/fugiat-nulla-blue-bottle-raw-denim-fap-sint-butcher-ethical-cosby-sweater-thundercats-distillery-laboris-tofu/answers/5/vote?type=down"
這裏是AJAX PARAMS從螢火蟲(這看起來非常錯誤的我,所以我不知道這是否是源問題或只是我是不熟悉螢火蟲:
這裏是從服務器輸出成功的非Ajax請求的參數:
Parameters: {"authenticity_token"=>"X3Dg3TSZ8blMNTT1Zce2R0A1rtZI93ViFJNsjOP145w=", "type"=>"up", "question_id"=>"fugiat-nulla-blue-bottle-raw-denim-fap-sint-butcher-ethical-cosby-sweater-thundercats-distillery-laboris-tofu", "id"=>"3"}
有趣的是,錯誤消息顯示'沒有路由匹配{...:question_id => nil,:id =>#<答案id:6,...} ...因爲1. question_id是零和2.因爲id是一個答案**對象**。你可以發佈你的routes.rb文件,一個成功的請求(當你不使用ajax時)參數在rails服務器輸出中,以及ajax請求的url和參數是什麼(來自firebug或chrome開發者工具)? – carols10cents
感謝您的關注。我剛剛發佈了您請求的信息。特別是AJAX參數對我來說看起來是錯誤的。今天早上我剛開始使用螢火蟲,所以我可能會在錯誤的地方尋找這些參數。 – dmanaster
我剛剛注意到,你說ajax請求「正確記錄投票,但是會給出以下錯誤:」所以這意味着ajax請求被正確路由並獲得您的控制器操作,並且路由錯誤正在發生在您的控制器操作被處理後發生。當這個請求完成後你做什麼?我發現你的respond_to塊中有'format.js {}';此請求完成後,您是否在JavaScript中執行任何操作?感謝您發佈額外的信息,這對處理一些事情非常有幫助。 – carols10cents