我有一个标准的用户控制器,带有一组正常的操作(索引、显示、新建、编辑等),我正在尝试添加一个名为“配置文件”的新操作。我添加了以下代码:
def profile
@user = User.find(session[:user_id])
end
我还为该操作创建了一个新视图(app/views/users/profile.html.erb),但是每当我尝试查看该页面时,都会出现错误:
ActiveRecord::RecordNotFound in UsersController#show 找不到 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?