尽管到目前为止我已经阅读了所有问题和解决方案,但这里没有任何内容对我有用,显示带有设计的登录用户个人资料页面。我也在我的路线中尝试了很多事情。我的错误当前显示 - “无法找到没有 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
有帮助吗?

解决方案

match 'users/show', to: 'users#show', via: 'get'

这行表明它将路由 url users/show 到你的控制器#action users#show. 。在你的控制器中,你正在寻找 id 为的用户 params[:id]. 。例外的是,您永远不会传递 id 参数。通常,id 在 url 中传递(即 users/show/:id)。这就是你的错误的原因。

解决方案取决于您想要实现的目标。您可以通过 url 传递 id,或者如果您想要 users/show 为了仅显示登录的用户配置文件,我将添加一个控制器操作(例如称为配置文件),然后设置/获取带有用户 ID 的会话变量并重定向到用户的视图。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top