我正在尝试创建一个用户show
页面(将用作个人资料页面)但我对如何使用Devise这样做感到困惑。似乎Devise没有提供任何类型的show
定义 - 有没有什么方法可以访问Devise正在实现的控制器,以便制作一个或者我必须覆盖它们?
答案 0 :(得分:69)
您应该生成一个继承自users_controller
的{{1}},并在那里定义您的自定义application_controller
方法。不要忘记为它创建一个视图和路由。
例如:
show
答案 1 :(得分:33)
不要忘记您的用户路由应低于devise_for用户路由,如下所示:
#routes.rb
devise_for :users
resources :users, :only => [:show]
此外,如果您使用用户名或电子邮件作为主键而不是通常的ID,则应通过声明路由来避免路由冲突:
#routes.rb
devise_for :users, :path_prefix => 'd'
resources :users, :only => [:show]
答案 2 :(得分:14)
使用设计显示current_user / other_user个人资料:
安装设计后
创建用户控制器:
rails generate controller Users
然后创建一个show动作并找到具有params 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 %>
这应该有效!
答案 3 :(得分:-11)
您可以生成设计使用的视图,因此您可以根据需要进行更改。
rails g devise:views