2015-04-04 144 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几乎“开箱即用”。