当我尝试加载用户的节目视图时,会收到错误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>
谢谢。
答案 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