Получение ошибки маршрутизации «Неинициализированная константа» при загрузке представления - PullRequest
1 голос
/ 21 сентября 2019

Я новичок в ruby ​​и rails и использую Rails 5.17 для разработки веб-приложения для класса.

Создание пустого проекта Rails было успешным, но что-то идет не так при созданииновый контроллер.Я создал новый контроллер с именем cars из корневого каталога проекта, который был успешным.В приложении / контроллере был файл с именем cars_controller.rb, который выглядит следующим образом:

 class CarsController < ApplicationController
 end

Я добавил в этот файл метод с именем hello, который ничего не делает.

Затем я создалфайл с именем cars.html.erb в каталоге app/views/layouts.Этот файл является базовой страницей HTML-кода.

В config/routes.rb я добавил следующее:

 get '/cars', to:: 'cars_controller#hello'
 resources: cars

После всего этого я запустил rails server и открыл localhost:3000 в браузере.Это вызывает обычную страницу приветствия Ruby on Rails.

Но когда я перехожу на localhost:3000/cars, я получаю следующее:

Routing Error uninitialized constant CarsControllerController

Я пробовализменение имени файла cars_controller.rb.Я попытался изменить имя класса в файле контроллера с CarsController на Cars.Я пробовал много разных маршрутов в routes.rb.Я наконец попытался удалить Rails 5.17 и установить Rails 5.13.

Я очень запутался, и я был бы благодарен за любой совет, который я могу получить.Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Одна из замечательных особенностей Rails - это предпочтение соглашения по конфигурации.Однако для того, чтобы это действительно принесло вам пользу, вам нужно, по возможности, придерживаться «рельсового пути», а не своего собственного пути.

В этом случае начните с избавления от своего пользовательского getroute, и просто используйте resources :cars.

. Из командной строки запустите rake routes (возможно, вы также сможете запустить rails routes в вашей версии rails) и посмотрите маршруты, которые он создал для вас..

Теперь переименуйте метод, который вы добавили в CarsController, с hello на index.

Переместите файл hello.html.erb с app/views/layout на app/views/cars/index.html.erb.

Наконец, запустите сервер rails (rails start) и загрузите в браузере URL http://localhost:3000/cars.

—-

Обратите внимание, что шаблоны в app/views/layout имеютспец. Назначение.Они используются для применения общего шаблона к вашим представлениям.Посмотрите использование layout в контроллере для более подробной информации

1 голос
/ 21 сентября 2019

Я думаю, у вас есть ошибка в том, как вы определили свой маршрут - вам не нужно _controller.

Вместо этого попробуйте следующее:

get '/cars', to: 'cars#hello'

Также имейте в виду, что в вашей директории cars вам нужно представление: hello.html.erb

...