用Devise创build一个`Users`显示页面

我试图创build一个用户show页面(这将作为一个configuration文件页面),但困惑于如何与Devise做到这一点。 似乎Devise没有任何types的show定义 – 有什么办法可以访问控制器Devise正在执行,以使一个或我必须重写它们?

您应该生成一个从application_controllerinheritance的users_controller并在那里定义您的自定义show方法。 不要忘记为它创build一个视图和路线。 例如:

 #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] 

不要忘了你的用户路由应该在devise_for用户路由下面,像这样:

 #routes.rb devise_for :users resources :users, :only => [:show] 

另外,如果您使用用户名或电子邮件作为主键而不是通常的ID,则应通过声明路由来避免路由冲突:

 #routes.rb devise_for :users, :path_prefix => 'd' resources :users, :only => [:show] 

用devise显示current_user / other_userconfiguration文件:

安装设备后

创build一个用户控制器:

 rails generate controller Users 

然后创build一个显示操作并使用params idfind用户:

 def show @user = User.find(params[:id]) end 

在用户视图文件夹中创build一个show.html.erb文件:

 <%= @user.email %> 

链接到用户显示页面:

 <%= link_to "current_user_show", current_user %> 

现在,如果要查看其他configuration文件,请在用户控制器中创build索引操作:

 def index @users = User.all end 

在用户视图文件夹中创build一个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文件那里您将创build一个循环并链接到用户configuration文件:

 <% @users.each do |user| %> <%= link_to user.username, user %> <%= user.email %> <% end %> 

这应该工作!

你可以生成devise使用的意见,所以你可以改变它,只要你想。

  rails g devise:views 
Interesting Posts