rails 5 api: няма достъп до крайна точка

Опитвам се да започна с rails 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 routes:

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 КРЕПКА /admin/vacationapplications/:id(.:format) admin/vacationapplications#update PUT /admin/vacationapplications/:id(.:format) admin/vacationapplications#update DELETE /admin/vacationapplications/:id(.:format) admin /vacationapplications#destroy


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


Отговори (1)


Според конвенцията на Rails, имената на класовете са с малки и големи букви (изписвайте с главна всяка нова „дума“ в името на класа). Ето как в момента имате class Admin:VacationApplicationsController.

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

resources :vacation_applications

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

Не сте споделили имената на файловете си, но само да добавя към точката: Това съвпадение между имената на класовете на pascal и главните и малки букви е същото за имената на вашите файлове, което би било vacation_applications_controller.rb за този ресурс.

Освен това, тъй като този клас е с пространство от имена, той трябва да бъде в папка admin във вашата папка controllers (ако още не е):

app/controllers/admin/vacation_applications_controller.rb

person inveterateliterate    schedule 10.12.2017