创建"用户"用Devise显示页面

时间:2014-11-03 21:00:14

标签: ruby-on-rails ruby devise

我正在尝试创建一个用作展示位置的用户展示页面。我相信我按照这里列出的建议取得了很好的进展: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“

有关如何解决此错误的任何建议?

3 个答案:

答案 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变量访问登录用户。