使用Devise创建`Users`显示页面

时间:2011-08-17 00:03:38

标签: ruby-on-rails devise show

我正在尝试创建一个用户show页面(将用作个人资料页面)但我对如何使用Devise这样做感到困惑。似乎Devise没有提供任何类型的show定义 - 有没有什么方法可以访问Devise正在实现的控制器,以便制作一个或者我必须覆盖它们?

4 个答案:

答案 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