2014-10-12 73 views
1

我是Rails的新手,我遇到了使用querystring參數設置非資源路由的問題。我試圖訪問以下網址:沒有路由與Ruby on Rails中的查詢字符串[GET]匹配

http://localhost:3000/exerciseLogs?userID=1 

當我訪問這個URL,我收到以下錯誤:

No route matches [GET] "/exerciseLogs" 

我的路線文件的定義如下:

get 'exerciseLogs?userID=:user_id' => 'exercise_logs#index', :defaults => { :format => 'json'}, :as => :get_user_exercise_logs 
get 'exerciseLogs/:id' => 'exercise_logs#show', :defaults => { :format => 'json' }, :as => :get_exercise_log 
post 'exerciseLogs?userID=:user_id' => "exercise_logs#create", :defaults => { :format => 'json'}, :as => :create_exercise_log 
patch 'exerciseLogs/:id' => 'exercise_logs#update', :defaults => { :format => 'json' }, :as => :update_exercise_log_patch 
put 'exerciseLogs/:id' => 'exercise_logs#update', :defaults => { :format => 'json' }, :as => :update_exercise_log_put 
delete 'exerciseLogs/:id' => 'exercise_logs#destroy', :defaults => { :format => 'json' }, :as => :delete_exercise_log 

解決這個問題的最好方法是什麼,以便我的路線實際上進入控制器?

回答

1

定義單獨行動user_log_index你不必在你的路線,定義查詢字符串參數。詳情請參閱rails routes with query string。所以你的情況,你可以做這樣的事情:

get '/exerciseLogs' => 'exercise_logs#index', :defaults => { :format => 'json'}, :as => :get_user_exercise_logs 
0

定義路由這樣

get 'exerciseLogs/user/:user_id' => 'exercise_logs#user_log_index', :defaults => { :format => 'json'}, :as => :get_user_exercise_logs 

,然後訪問它

http://localhost:3000/exerciseLogs/user/1 

在控制器

+0

不幸的是您的解決方案不符合我的要求,我正在尋找類似如下的URL: 的http://本地主機:3000/exerciseLogs USER_ID = user_id 您提供的URL將獲得單個日誌,而不是整個用戶的日誌。 – ACOMIT001 2014-10-12 14:15:08

+0

請詳細說明,您正在努力實現的目標 – 2014-10-12 14:16:42

+0

我想要一個允許我爲單個用戶檢索日誌的URL。 – ACOMIT001 2014-10-12 14:17:57

相關問題