尽管到目前为止我已经阅读了所有问题和解决方案,但在此处没有任何内容可用于显示已设置的用户个人资料页面。我也在我的路线上尝试了很多东西。我的错误目前显示 - "无法找到没有ID的用户"。我是一名设计新手,所以在我喜欢的时候,它有点令人沮丧。任何帮助,将不胜感激。仍处于学习阶段。感谢。
class UsersController < ApplicationController
before_filter :authenticate_user!, :except => [:show]
after_action :verify_authorized
def index
@users = User.all
authorize User
end
def show
@user = User.find(params[:id])
authorize @user
end
路线
Rails.application.routes.draw do
devise_for :users
devise_scope :user do
get 'users/sign_in' => 'devise/sessions#new'
get 'users/sign_out' => 'devise/sessions#destroy'
end
resources :user
match 'users/show', to: 'users#show', via: 'get'
root to: 'pages#home'
end
答案 0 :(得分:1)
match 'users/show', to: 'users#show', via: 'get'
此行表明它会将网址users/show
路由到您的控制器#action users#show
。在控制器内部,您正在寻找ID为params[:id]
的用户。除此之外,您永远不会传入id参数。通常,id在url中传递(即users/show/:id
)。这是导致错误的原因。
解决方案取决于您要完成的任务。您可以通过URL传递id,或者如果您希望users/show
仅显示登录的用户配置文件,我会添加控制器操作(例如,称为配置文件),然后设置/获取会话变量用户ID并重定向到用户的视图。