我正在尝试创建一个User show页面(它将用作个人资料页面),但我对如何使用Devise实现这一点感到困惑。看起来Devise似乎没有任何show定义--有没有什么方法可以访问Devise实现的控制器来创建一个控制器,或者我必须覆盖它们?
发布于 2011-08-17 09:41:02
您应该生成一个继承自application_controller的users_controller,并在其中定义您的自定义show方法。别忘了为它创建一个视图和路由。例如:
#users_controller.rb
def show
@user = User.find(params[:id])
end
#in your view
<%= @user.name %>
#routes.rb
match 'users/:id' => 'users#show', via: :get
# or
get 'users/:id' => 'users#show'
# or
resources :users, only: [:show]发布于 2012-01-21 00:01:28
不要忘记,您的用户路由应该位于devise_for用户路由之下,如下所示:
#routes.rb
devise_for :users
resources :users, :only => [:show]此外,如果您使用用户名或电子邮件作为主键,而不是通常的id,则应按如下方式声明路由,以避免路由冲突:
#routes.rb
devise_for :users, :path_prefix => 'd'
resources :users, :only => [:show]发布于 2015-08-18 01:12:11
使用devise显示current_user/ other_user配置文件:
安装devise后的
创建用户控制器:
rails generate controller Users然后创建一个show操作并找到参数id为的用户:
def show
@user = User.find(params[:id])
end在用户视图文件夹中创建一个show.html.erb文件:
<%= @user.email %>链接到用户显示页面:
<%= link_to "current_user_show", current_user %>现在,如果您想查看其他配置文件,请在用户控制器中创建索引操作:
def index @users = User.all end在用户视图文件夹中创建一个index.html.erb,然后:
<% @users.each do |user| %>
<%= link_to user.username, user %>
<%= user.email %>
<% end %>此链接将为:
<%= link_to "show_index_of_users", users_path %>这会将您链接到用户的index.html.erb文件,您将在其中创建一个循环并链接到用户配置文件:
<% @users.each do |user| %>
<%= link_to user.username, user %>
<%= user.email %>
<% end %>这应该行得通!
https://stackoverflow.com/questions/7086583
复制相似问题