неинициализированная постоянная ошибка в rails 3 на вновь созданном контроллере

#ruby-on-rails #ruby-on-rails-3.1

#ruby-on-rails #ruby-on-rails-3.1

Вопрос:

Я добавил контроллер сеанса в свое приложение для входа / выхода пользователя, используя

новый сеанс rails g controller создать уничтожить

затем добавьте следующие строки в мой файл маршрута:

ресурсы: сеансы : only => [:new, :create, :destroy]
совпадают с ‘/ signup’, :to => ‘пользователи#новые’
совпадают с ‘/ signin’, :to => ‘сеансы# новые’
совпадают с ‘/ signout’, :to => ‘сеансы#уничтожить ‘

когда я делаю rake routes это в консоли, маршруты отображаются, но когда я запускаю приложение в браузере, я получаю эту ошибку:

неинициализированный постоянный SessionsController

Заранее спасибо!

Ответ №1:

Вы создали Session контроллер, а не Sessions контроллер. Поскольку он единичный, вам нужен единичный маршрут:

 resource :session, :only => [:new, :create, :destroy]
  

Комментарии:

1. также единственное число в session_path?

2. Я бы так подумал, но вы можете убедиться в этом, запустив rake routes и просмотрев первый столбец выходных данных для поиска интересующих ресурсов. Если вы добавите _path в конец этих вещей, вы получите имя переменной.

3. @vinc386 Да; вы также можете увидеть, через какие маршруты доступны rake routes .

4. спасибо, меня всегда смущают эти соглашения о единственном / множественном числе

Ответ №2:

Я столкнулся с этим сегодня и обнаружил, что мне нужно было сделать три вещи: 1) использовать ресурс (не ресурсы); 2) предоставить контроллер вручную и 3) вручную установить URL-адрес в form_for для тегов с использованием ресурса (может не подходить для вашего случая)…

 # routes.rb
resource :session, :only => [:new, :create, :destroy], :controller => 'session'

#.../new.html.erb
<% form_for @session, :url => session_path do |f| %>
  

Указание контроллера имеет значение, если, как и я, ваше имя контроллера, имена файлов и т. Д. Являются единственными.

По-видимому, это связано с ошибкой в rails