我正在尝试创建一个用作展示位置的用户展示页面。我相信我按照这里列出的建议取得了很好的进展:Creating a `Users` show page using Devise但我还没到那里。
到目前为止,我已完成以下操作:
在users_controller.rb文件中创建了show方法
def show
@user = User.find(params[:id])
end
在routes.rb
中创建路线devise_for :users
resources :users, :only => [:show]
在devise / registrations / show.html.erb下创建了视图show.html.erb
<%= @user.name %>
现在我假设我可以通过localhost:3000 / users / 1为ID = 1的用户访问此页面,但是当我这样做时,我收到错误:
缺少模板用户/ show,application / show with {:locale =&gt; [:en],:formats =&gt; [:html],&gt;:handlers =&gt; [:erb,:builder,:raw ,:ruby,:jbuilder,:coffee]}。搜索:*“c:/用户 / Evan / Desktop / reviewdraft / app / views“*”c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0 /gems/devise-3.4.1/app/views“
有关如何解决此错误的任何建议?
答案 0 :(得分:4)
如果你注意到这一点,那就很明显了:Missing template users/show
。它要求您在用户目录中创建show.html.erb。
您需要在此处创建视图: app / views / users / show.html.erb ,而不是设计/注册/ show.html.erb ,因为您'从UsersController
重新继承ApplicationController
,这与Devise无关。使用此功能创建 app / views / users / show.html.erb ,然后重试:
<%= @user.name %>
答案 1 :(得分:1)
使用设计显示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 %>
这应该有效!
答案 2 :(得分:0)
Devise有自己的观点。您无需自己编写用户视图。要生成视图,请使用此生成器:rails generate devise:views
所有需要的视图都将在 app / views / devise 下生成
在那里,您可以通过current_user
变量访问登录用户。