ste*_*392 45 ruby-on-rails show devise
我正在尝试创建一个用户show页面(将用作个人资料页面)但我对如何使用Devise这样做感到困惑.似乎Devise没有任何类型的show定义 - 有没有什么方法可以访问Devise正在实现的控制器,以便制作一个或者我必须覆盖它们?
Ser*_*nin 72
您应该生成一个users_controller继承自application_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]
Run Code Online (Sandbox Code Playgroud)
Ash*_*aka 36
不要忘记您的用户路由应该低于devise_for用户路由,如下所示:
#routes.rb
devise_for :users
resources :users, :only => [:show]
Run Code Online (Sandbox Code Playgroud)
此外,如果您使用用户名或电子邮件作为主键而不是通常的ID,则应通过声明路由来避免路由冲突:
#routes.rb
devise_for :users, :path_prefix => 'd'
resources :users, :only => [:show]
Run Code Online (Sandbox Code Playgroud)
Man*_*lla 17
使用设计显示current_user/other_user配置文件:
安装完设计后
创建用户控制器:
rails generate controller Users
Run Code Online (Sandbox Code Playgroud)
然后创建一个show动作并找到具有params id的用户:
def show
@user = User.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)
在用户视图文件夹中创建show.html.erb文件:
<%= @user.email %>
Run Code Online (Sandbox Code Playgroud)
链接到用户显示页面:
<%= link_to "current_user_show", current_user %>
Run Code Online (Sandbox Code Playgroud)
现在,如果要查看其他配置文件,请在用户控制器中创建索引操作:
def index @users = User.all end
Run Code Online (Sandbox Code Playgroud)
在用户视图文件夹中创建index.html.erb,然后:
<% @users.each do |user| %>
<%= link_to user.username, user %>
<%= user.email %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这个链接将是:
<%= link_to "show_index_of_users", users_path %>
Run Code Online (Sandbox Code Playgroud)
这将链接到用户index.html.erb文件,您将创建一个循环并链接到用户配置文件:
<% @users.each do |user| %>
<%= link_to user.username, user %>
<%= user.email %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这应该工作!
| 归档时间: |
|
| 查看次数: |
34542 次 |
| 最近记录: |