2016-04-09 89 views
0

我使用AJAX監聽我的表單上名爲question_language_id的下拉列表的更改,當此更改時我想運行一些javascript以對錶單進行一些更改。Rails - 使用顯示路線而不是我定義的路線

我遇到的問題是,導軌,可直接到達展會行動,而不是我的update_questions_direction作用,這導致錯誤在show動作'Question could not be found with id=update_questions_direction'.

耙路線的順序似乎並沒有改變這一點。

我的AJAX調用如下:

$(document).on 'change', '#question_language_id', (evt) -> 
$.ajax 'update_questions_direction', 
    type: 'GET' 
    dataType: 'script' 
    data: {"language_id": $("#question_language_id option:selected").val()} 
    error: (jqXHR, textStatus, errorThrown) -> 
    console.log("AJAX Error: #{textStatus}") 
    success: (data, textStatus, jqXHR) -> 
    console.log("Direction was changed") 

從routes.rb中:

get 'questions/update_questions_direction', as: 'update_questions_direction' 


resources :categories do 
    resources :questions do 
     resources :answers 
     member do 
      get :quizzes 
     end 
    end 
end 

從耙路輸出相關:

update_questions_direction GET /questions/update_questions_direction(.:format)       questions#update_questions_direction 
category_question GET /categories/:category_id/questions/:id(.:format)       questions#show 

我不明白這是爲什麼發生 - 爲什麼rails認爲update_questions_direction是id?

,我得到的錯誤是:

ActiveRecord::RecordNotFound in QuestionsController#show 
Couldn't find Question with 'id'=update_questions_direction 

我真的很感激任何幫助,感謝您的時間。

回答

1

問題是您在ajax調用中使用相對路徑,所以請求被放到相對於當前路徑的路徑中。如果當前路徑是/categories/1/questions,那麼這不是神祕的爲什麼它想要去/categories/1/questions/update_questions_direction,並且在數據庫中找不到id。 最快的解決方案是用絕對代替相對路徑:

$.ajax '/questions/update_questions_direction', 
+0

非常感謝!完美地工作,並感謝您的解釋 – JungleBook