Добавление другого маршрута в пространство имен API в Rails - PullRequest
0 голосов
/ 05 июля 2019

У меня есть несколько маршрутов в "/ api", например:

/api/users
/api/users/new
/api/users/:id/edit

В UsersController все методы отвечают как JSON, и он ведет себя как система API.

Я хочу добавить другой маршрут в /api пространство имен - например, /api/auth/index

Я добавил новый resources, но он не работает

Это мои маршруты.rb:

Rails.application.routes.draw do
  devise_for :users
  root to: "pages#root"

  namespace :api do
    resources :user, only: %i[index show create destroy update search]
    post '/user/import', to: 'user#import_line'    
    resources :auths, only: %i[index]
  end

  get '*path', to: 'pages#root'
end

Как добавить новые маршруты в api пространство имен?

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Вы должны использовать resources :users, а не :user.Маршруты отдыха должны быть во множественном числе *Если их больше одного, вы всегда должны использовать форму множественного числа.

namespace :api do
  resources :users, only: %i[index show create destroy update]
end

Это может показаться несущественным, но из-за соглашения о конфигурации рельсов это вызовет у вас тонны печали, поскольку не будетправильно работать с полиморфными помощниками маршрута.Имя вашего контроллера также должно быть во множественном числе (Api::UsersController).

К добавить дополнительные релаксирующие действия передать блок на resources:

namespace :api do
  resources :users, only: %i[index show create destroy update] do
    get :search
    post :import, on: :collection, action: :import_line
  end
end

Как добавить новые маршруты в пространство имен api?

Поместив их в блок, который вы передали namespace:

namespace :api do
  resources :users, only: %i[index show create destroy update] do
    get :search
    post :import, on: :collection
  end
  resources :auths, only: [:index]
end

Однако это создаст GET /auths не GET /auths/index.Я бы посоветовал вам прочитать руководства по рельсам о том, как соглашения по рельсам управляют спокойной маршрутизацией .

0 голосов
/ 05 июля 2019

удали свой% i и напиши как ниже, у меня работает.

namespace :api do
  resources :auths, only: [:index]
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...