我正在按照教程编写我的第一个使用Rails 4的应用程序。 几乎完成了用户部分(控制器,视图和模型),我想将像/ profile这样的路由匹配到'users#show' 所以我做了:
ressources :users
get 'profile' => 'users#show'
问题出在我的控制器中:
def show
@user = User.find(params[:id])
end
当我到达网址/个人资料时,我收到了此错误
找不到没有ID的用户
我已经阅读过这些指南,我认为这些参数传递过来但似乎并非如此。 这肯定是一个愚蠢的错误,但我没有找到它。
谢谢!
答案 0 :(得分:3)
您需要在URL中指定ID占位符,如下所示:
获取'个人资料/:id'=> '用户#秀'
现在您可以调用类似
的网址“简档/ 12”
您可以在控制器中以
的形式访问它PARAMS [:ID]
在此处查看有关路由的文档http://guides.rubyonrails.org/routing.html
答案 1 :(得分:0)
好的,我发现它是我自己的。确实有点愚蠢。 由于我已经按照本教程进行操作,因此我实现了SessionControllers,并在每次请求时发送了remember_token以查找已登录的用户。这就是我需要在用户控制器中更改的内容,因此看起来像这样:
def show
if params[:id]
@user = User.find(params[:id]
else
@user = current_user # method from session helper from tutorial
end
end
所以现在当我输入/个人资料时,对于已登录的用户,它会重定向到他的个人资料&当我们输入profile / 4时,我们会看到ID为4的用户的个人资料,(在下一个答案中添加如下:
get 'profile/:id' => 'users#show'