2015-04-04 4 views
1

У меня возникают проблемы, пытаясь определить правильный маршрут для запроса, исходящего от ember. Запрос не появляется, как это:Rails route и querystring

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

В случае получения только одного пользователя, было бы более общим для маршрута это к вашему шоу действия, как вы первоначально предполагались , Для достижения этой цели, не передает идентификатор как пары запроса, но вместо того, чтобы как сегмент пробкового /users/1011, которые вы можете выполнить, объявив следующее в вашем routes.rb:

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

Если вы хотите идти полный ход то вы можете также просто объявить пользователь как ресурс, как так:

resources :users 

Который будет автоматически проволочным свой индекс, шоу, обновление, уничтожить и т.д. Бросьте Active Model Serializers в смеси, и вы можете иметь Ember данные начинают говорить к вашему API почти «из коробки».