#ruby-on-rails #api #http
#ruby-on-rails #API #http
Вопрос:
Я пытаюсь запросить список объектов из Rails API. То есть, допустим, я хотел бы получить экземпляры с идентификатором 2
4
и 7
из определенной модели.
До сих пор моим ближайшим предположением была передача строки id
s, разделенной запятыми, на обычный resource/:id
маршрут, затем я разделил параметр, создал из него массив и передал его where
вызову.
Это работает — однако я чувствую, что это не самый чистый способ сделать то, что я собираюсь сделать.
Итак, я спрашиваю вас, есть ли способ Rails справиться с этим.
Как должен выглядеть URL-адрес? Как мне прочитать переданные значения из контроллера?
Комментарии:
1. Это API под вашим контролем? Если вы хотите передать параметры массива в приложение Rack (например, Rails), вы должны передать их через as
?foo[]=1amp;foo[]=2amp;foo[]=3
. Что даст вам{ foo: [1,2,3] }
. Однако обрабатывать это в методе show неправильно. Это должно быть сделано в индексном методе, поскольку вы отображаете несколько записей с фильтром.
Ответ №1:
Я думаю, что это должен быть фильтр по пути индекса, принимающий ids
параметр.
Итак, URL-адрес должен выглядеть так
/resource?ids[]=2amp;ids[]=4amp;ids[]=7
И вы можете найти эти ресурсы с помощью
def index
if params[:ids].blank?
@resources = Resource.all
else
@resources = Resource.find(params[:ids])
end
end