我有一个标准的用户控制器与正常的一套行动(索引,显示,新,编辑等),我试图添加一个名为'配置文件'的新行动。我添加以下代码:新行动不工作
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'
因此,其实我有两个问题:
- 我有什么为了让做我新的行动?
- 为什么现有路线不能覆盖这种情况?其他只由控制器和动作构成的网址就可以工作(例如http://localhost:3000/users/new)。为什么不是这个?它不应该仅仅评估:controller = users,:action = profile,:id = nil?
在配置文件页面上,我从会话中获取id(它是为当前登录的用户),而在显示页面上,它从params中获取它,因为show可以用于任何用户,而不仅仅是登录的用户。 – Jason 2009-07-28 05:24:28