Почему я получаю неинициализированную константу Api :: SessionsController: error? - PullRequest
0 голосов
/ 28 января 2020

Я получаю это сообщение об ошибке:

NameError - uninitialized constant Api::SessionsController:

Но я дважды проверил, и моя конфигурация маршрутов выглядит правильно:

Rails.application.routes.draw do
  namespace :api, defaults: {format: :json} do 
    resources :users, only: :create
    resource :session, only: [:create, :destroy]
  end 

  root 'static_pages#root'
end

Мой контроллер также использует единственное число session:

class Api::SessionController < ApplicationController
  def create
    @user = User.find_by_credentials(
      params[:user][:username],
      params[:user][:password]
    )
    if @user 
      log_in(@user)
      render 'api/users/show'
    else 
      render json: ['Your request failed. Please try again.'], status: 401
    end
  end

И моя структура папок выглядит следующим образом:

enter image description here

Ответы [ 2 ]

0 голосов
/ 29 января 2020

если хочешь сохранить как ты настроил.

post 'session' => 'session#create', as: :session_create
destroy 'session' => 'session#destroy', as: :session_destroy
0 голосов
/ 28 января 2020

Rails имеет очень хорошее официальное руководство.

Сеанс является единственным ресурсом без ссылки на идентификатор.

Поскольку вы, возможно, захотите использовать тот же контроллер для единственного маршрута (/account) и множественного маршрута (/accounts/45) единичные ресурсы отображаются на несколько контроллеров. Так, например, resource :photo и resources :photos создают как одиночные, так и множественные маршруты, которые отображаются на один и тот же контроллер (PhotosController).

Так что вам нужно переименовать контроллер на Api::SessionsController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...