Ruby on rails 4 设计展示用户
尽管到目前为止我已经读到了所有的问题和解决方案,但在这里我还没有看到任何对我有用的东西,显示了一个带有Desive的登录用户配置文件页面。我在我的路线上也尝试了很多东西。我的错误当前显示为“找不到没有ID的用户”。我是Desive的新手,所以虽然我喜欢Desive,但它有点令人沮丧。任何帮助都将不胜感激。仍处于学习阶段。谢谢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!,
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
这行表示它将urlusers/show
路由到您的控制器#actionusers#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'