Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 设计展示用户_Ruby On Rails 4_Devise_User Profile - Fatal编程技术网

Ruby on rails 4 设计展示用户

Ruby on rails 4 设计展示用户,ruby-on-rails-4,devise,user-profile,Ruby On Rails 4,Devise,User Profile,尽管到目前为止我已经读到了所有的问题和解决方案,但在这里我还没有看到任何对我有用的东西,显示了一个带有Desive的登录用户配置文件页面。我在我的路线上也尝试了很多东西。我的错误当前显示为“找不到没有ID的用户”。我是Desive的新手,所以虽然我喜欢Desive,但它有点令人沮丧。任何帮助都将不胜感激。仍处于学习阶段。谢谢 class UsersController < ApplicationController before_filter :authenticate_user!,

尽管到目前为止我已经读到了所有的问题和解决方案,但在这里我还没有看到任何对我有用的东西,显示了一个带有Desive的登录用户配置文件页面。我在我的路线上也尝试了很多东西。我的错误当前显示为“找不到没有ID的用户”。我是Desive的新手,所以虽然我喜欢Desive,但它有点令人沮丧。任何帮助都将不胜感激。仍处于学习阶段。谢谢

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
这行表示它将url
users/show
路由到您的控制器#action
users#show
。在控制器内部,您正在寻找id为
params[:id]
的用户。除此之外,您永远不会传入id参数。通常,在url中传递id(即
users/show/:id
)。这就是你犯错误的原因


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

感谢您的回复。你的第二个选择是我想做的。那么基本上在用户控制器中添加一个名为profile的操作,该操作使用当前会话渲染视图?我应该使用设计当前用户方法吗?我忘记了
当前用户
。您可以检查id是否已传递(
params.has_key?“id”
),如果已传递,则呈现在数据库中找到的@user;如果未传递,则使用当前用户呈现视图。无需修改路线或添加其他控制器操作(但是,您需要修改
show
操作)。这可能是最好的行动
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'