#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