用Devise创build一个`Users`显示页面
我试图创build一个用户show
页面(这将作为一个configuration文件页面),但困惑于如何与Devise做到这一点。 似乎Devise没有任何types的show
定义 – 有什么办法可以访问控制器Devise正在执行,以使一个或我必须重写它们?
您应该生成一个从application_controller
inheritance的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