ActionController :: RoutingError (неинициализированная константа User :: UsersController) в heroku (но все работает локально) - PullRequest
3 голосов
/ 30 июня 2011

Я пытаюсь запустить свое приложение в heroku, но я получаю эту ошибку при попытке зарегистрироваться или даже получить доступ к странице входа в devise:

ActionController::RoutingError (uninitialized constant User::UsersController)

Это ошибка устройства или настройки сервера, которые я пропустил в heroku?

Между прочим, я запускаю приложение rails3.1 в стеке кедров, и загрузка страницы индекса хороша, но если я пытаюсь войти или зарегистрироваться, она дует.

Форма регистрации показывает, но когда я отправляю, это когда он дует. Я проверил логи, и он сделал POST для контроллера, но ПОЛУЧЕНИЕ получившейся страницы (при перенаправлении, я думаю) взрывает ее.

Любая помощь?

EDIT

вот мои маршруты:

root :to => "home#index"

devise_for :users

namespace :user do
  root :to => "users#welcome"
end

resources :users, :only => :show

Сотрудник службы поддержки heroku также спросил о моих маршрутах, но почему это происходит только в производстве? Кроме того, я не думаю, что есть какие-либо проблемы с маршрутами ... есть?

Ответы [ 3 ]

6 голосов
/ 29 июля 2011

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

match 'users' => 'users#welcome', :as => 'user_root'

Таким образом, вы можете иметь два«домашние» страницы.У меня это сработало.

https://github.com/plataformatec/devise/wiki/How-To%3a-Redirect-to-a-specific-page-on-successful-sign-in

1 голос
/ 14 июля 2011

Это ваша проблема:

namespace :user do
  root :to => "users#welcome"
end

Вы можете удалить это?

0 голосов
/ 26 мая 2018

Я получил ту же ошибку.Ошибка воспроизводилась только в Heroku, а не локально.Я понял, что, хотя я добавил ресурс в маршруты и выдвинул его, все сгенерированные леса все еще лежали локально.Как только я добавил все сгенерированные вещи в git и нажал, на Heroku все заработало.

...