Rails 4:路由匹配,找不到ID

时间:2014-07-25 11:23:55

标签: ruby-on-rails

我正在按照教程编写我的第一个使用Rails 4的应用程序。 几乎完成了用户部分(控制器,视图和模型),我想将像/ profile这样的路由匹配到'users#show' 所以我做了:

ressources :users
get 'profile' => 'users#show'

问题出在我的控制器中:

def show
    @user = User.find(params[:id])
end

当我到达网址/个人资料时,我收到了此错误

  

找不到没有ID的用户

我已经阅读过这些指南,我认为这些参数传递过来但似乎并非如此。 这肯定是一个愚蠢的错误,但我没有找到它。

谢谢!

2 个答案:

答案 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'