2015-04-04 121 views
1

我遇到了麻煩,試圖爲來自餘燼的查詢定義正確的路由。請求似乎是這樣的:Rails路由和查詢字符串

GET "/users?id=1011 

無論我怎麼努力,我總是有轉發到索引操作的要求,同時其意爲展示動作。 我已經嘗試了很多東西,比如

get "/users?id=", to: redirect('/users') 

,但似乎沒有任何工作。 任何人都可以向我解釋我能做些什麼,最重要的原因是什麼? 非常感謝您的時間!

回答

2

GET /users?id=1011總是進入索引,因爲Rails只看到路由爲GET /users。問號表示一個參數,它不是您定義的任何路線的一部分。

您可以修改您的索引方法來解釋帕拉姆,是這樣的:

def index 
    if params[:id] 
     # call show, do something, whatever 
    else 
     # regular index action 
    end 
end 
0

在檢索只有一個用戶的情況下,這將是更常見的路線給你的演出行動,你原本打算。要做到這一點,不通過ID作爲查詢參數,而是作爲一個塞段/users/1011,您可以通過聲明在你的routes.rb以下完成:

get '/users/:id', to: 'users#show' 

如果你想要去全速那麼你可能也只是申報的用戶像這樣的資源:

resources :users 

,它會自動線了索引,顯示,更新,銷燬等在混合扔Active Model Serializers,你可以有灰燼數據開始說話到您的API幾乎「開箱即用」。