rails 5 API: невозможно получить доступ к конечной точке

Я пытаюсь начать работу с рельсами 5 и создаю API для его использования с помощью angular.

У меня есть сущности администратора и сотрудника, сотрудник создает запрос на отпуск, а администратор принимает или отклоняет его.

Я начинаю с контроллера администратора, кодирующего первый метод: индексирование с получением всех необработанных запросов.

вот контроллер:

class Admin::VacationApplicationsController < ApplicationController

  def index
    @requests = VacationApplication.where("is_treated = 0").order("created_at ASC")
    render json: @requests, status: :ok
  end

  def acceptRequest

  end

  def rejectRequest

  end


end

а вот файл route.rb:

Rails.application.routes.draw do
  devise_for :employes
  devise_for :admins

  namespace :admin do
    resources :vacationapplications
    resources :employes
  end


end

при запуске сервера и перейдите к этому uri:

http://localhost:3000/admin/vacationapplications

я получил эту ошибку:

неинициализированная константа Admin::VacationapplicationsController

здесь вывод команды rails route:

admin_vacationapplications GET /admin/vacationapplications(.:format) admin/vacationapplications#index POST /admin/vacationapplications(.:format) admin/vacationapplications#create admin_vacationapplication GET /admin/vacationapplications/:id(.:format) admin/vacationapplications#show PATCH /admin/vacationapplications/:id(.:format) admin/vacationapplications#update PUT /admin/vacationapplications/:id(.:format) admin/vacationapplications#update DELETE /admin/vacationapplications/:id(.:format) admin /отпускные приложения#уничтожить


person Marwen Boughraira    schedule 09.12.2017    source источник


Ответы (1)


По соглашению Rails имена классов имеют регистр pascal (каждое новое «слово» в имени класса пишется с большой буквы). Вот как у вас сейчас есть class Admin:VacationApplicationsController.

Когда вы ссылаетесь на этот класс в другом месте, например, в файле маршрута, вы должны использовать регистр змеи, чтобы соответствовать разделению слов в имени вашего класса. Таким образом, ваши маршруты для этого ресурса будут выглядеть так:

resources :vacation_applications

Обратите внимание на знак подчеркивания между vacation и applications, которого сейчас нет.

Вы не поделились своими именами файлов, просто чтобы добавить к сути: это соответствие между именами классов паскаля и регистром змеи одинаково для ваших имен файлов, что будет vacation_applications_controller.rb для этого ресурса.

Кроме того, поскольку этот класс имеет пространство имен, он должен находиться в папке admin в вашей папке controllers (если это еще не сделано):

app/controllers/admin/vacation_applications_controller.rb

person inveterateliterate    schedule 10.12.2017