Api в Руби on Rails: Я могу добавлять различные методы GET организации?

Произведя драйвер и маршруты, я должен делать метод Поверьте, Update, Index, Шоу, которое они представляют в различные глаголы HTTP, GET, POST УДАР В ЛУНКУ.

Мое сомнение состоит в том, что он происходит, если например в методе index я консультирую список всех пользователей, но хочу другой метод, чем я лучших 10 пользователей и другого, где пользователей списка в специфическом средстве, я должен конфигурировать и производить маршруты для каждого из этих действий, или что является правильным?

В случае когда является возможный конфигурировать маршруты, чтобы иметь больше действий метода GET, как я это объясняю наверху, который является способом делать с Руби on Rails.

3
задан 10.03.2016, 22:44
3 ответа

Ты можешь делать это многими способами, я буду объяснять тебе самую простую две:

  1. Посредством какого-то типа фильтра в твоем действии index

  2. Создавая новые маршруты и действия твоего драйвера

Посредством какого-то типа фильтра в твоем действии index

Если ты используешь resources :users в твоих маршрутах ты можешь добавлять параметр к твоей ссылке: users_path(:user_filter => 'best_ten').

Если ты не используешь resources, ты можешь помещать твое такое соединение: <a href='/users?user_filter=best_ten'>Link </a> и ввод в routes.rb у него был бы этот аспект: get 'users' => 'users#index'

Тогда в твоем драйвере ты можешь знать, выбираешь ли ты все или достаешь лучшие 10:

users_controller.rb

def index
  if params[:user_filter] && params[:user_filter] == 'best_ten'
    @users = User.all.order_by(:score).limit(10) # Aquí iría tu código real
  else
    @users = User.all
  end
end

Важное состоит в том, чтобы ты послал параметр в твой метод драйвера, что ты также можешь подтверждать посредством консоли Rails.

Создавая новые маршруты и действия твоего драйвера

Второй метод - меньше "restful", но может подавать тебя для того, чтобы код драйверов был проще, с недостатком, который у тебя будет многие другие действия, прежде всего, если много выданные различные снопы.

routes.rb

get 'best_ten_users' => 'users#best_ten'

Ссылка в вышеупомянутый список в views/users/index.html.erb

<a href='/best_ten_users'> Link </a>

users_controller.rb

(...)

def best_ten
  @users = User.all.order(:score).limit(10)
end

(...)

1
ответ дан 24.11.2019, 14:45

способ это делать с Rails - простой.

# config/routes.rb
resources :users do
  collection do
    get "top_ten"
    get "role/:role_name"
  end
end

Это произведет тебе следующие маршруты в твоем приложении:

GET /users
POST /users
GET /users/new
GET /users/:id
PUT /users/:id
GET /users/id/edit
DELETE /users/:id
GET /users/top_ten
GET /users/role/:role_name
0
ответ дан 24.11.2019, 14:45

она была бы больше волной REST, что Rails, но podrГ-эксперта создавать один mГ©todo, что получил эти фильтры и возвратил стоимость в index Гі хорошо добавлять их прямо в mГ©todo index, хороший - то, что приходит в голову мне, думает в Rails for Zombies 2, что они применяют что-то asГ, - привет.

-1
ответ дан 24.11.2019, 14:45
  • 1
    Понимая, что OP - новичок в Rails, этот ответ не помогает много, так как нет примеров c и # 243; я говорю и отдельно он est и # 225; s рекомендуя (сомнительной формы так как " crees") курс, в котором даже ты не показываешь, в котором единица или тема может находить soluci и # 243; n в Вашу проблему. –  Puce 07.04.2016, 12:29