rails无法找到具有' id' =的用户

时间:2016-04-21 14:46:25

标签: ruby-on-rails

当我尝试加载用户的节目视图时,会收到错误Couldn't find User with 'id'=

它特别指向UsersController

中的第二行
def show
 @user = User.find(params[:id]) ## shows the error in this line
end

有趣的是, USED 加载,直到我将路线更改为:

Rails.application.routes.draw do
  devise_for :users
  get 'users/show'
  root 'users#show'
  get 'welcome/index'
  resources :users
end

为什么我在更改路由后出现此错误?(我改变了,因为我的目标是在设计登录后直接转到用户配置文件)如何解决?

哦,以下是我的用户显示视图,以防错误出现在那里:

<h1>This is the user show view </h1>
<p>Your email is: <%= @user.email %></p>
<p>Your name is: <%= @user.name %></p>

谢谢。

3 个答案:

答案 0 :(得分:1)

这不起作用:

root 'users#show'

它告诉rails使用您的用户#show page作为startpage 但是rails并不知道它应该显示哪个用户。那时没有给出用户ID。这就是为什么你在错误消息id=中看到没有等号背后的东西的原因。

答案 1 :(得分:1)

如果您想在登录后显示操作,而不是

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

你可以这样做:

 @user = current_user

答案 2 :(得分:0)

默认情况下,设计会将您重定向到根路径。

默认根路径'welcome / index'是一个集合操作。也就是说,它不需要传入id。

现在您已将其更改为成员操作'users / show /:id'。所以你需要传入id。

最简单的方法是在应用程序控制器中覆盖设计,如下所示:

def after_sign_in_path_for(resource)      
    redirect_to root_path(current_user.id)  
end