У меня есть стандартный пользовательский контроллер с нормальным набором действий (индекс, шоу, новый, редактировать и т. Д.), И я пытаюсь добавить новое действие с именем «профиль». Я добавил следующий код:Новое действие не работает
def profile
@user = User.find(session[:user_id])
end
Я также создал новый вид для действия (приложение/просмотров/пользователей/profile.html.erb), но всякий раз, когда я пытаюсь просмотреть эту страницу, я получаю сообщение об ошибке:
ActiveRecord::RecordNotFound in UsersController#show Couldn't find User with ID=profile ...
Видимо, это поражает действие шоу. Я предполагаю, что это означает, что мне нужно добавить что-то к моим маршрутам, чтобы выполнить эту работу, но я не знаю, что. До сих пор я просто есть два маршрута по умолчанию и map.root линию, которую я незакомментированной:
map.root :controller => "home"
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
Так на самом деле у меня есть два вопроса:
- Что я должен сделать для того, чтобы дать возможность моим новые действия?
- Почему существующие маршруты не покрывают эту ситуацию? Другие URL-адреса, состоящие только из контроллера и действия, работают очень хорошо (например, http://localhost:3000/users/new). Почему не этот? Не следует ли это просто оценить: controller = users,: action = profile,: id = nil?
На странице профиля Я получаю идентификатор от сеанса (он для текущего пользователя), а на странице просмотра он получает его из параметров, так как показ может быть использован для любого пользователя, а не только того, кто вошел в систему , – Jason