2014-11-03 72 views
1

我在创建一个用户显示页面,它将充当仪表板。我相信我已经按照这里列出的建议取得了很好的进展:Creating a `Users` show page using Devise但我还没有完成。用Devise创建“Users”显示页面

我已经做了以下至今:

创造了users_controller.rb文件显示方法

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

创建于routes.rb中

devise_for :users 
resources :users, :only => [:show] 
路线

在devise/registrat下创建视图show.html.erb离子/ show.html.erb

<%= @user.name %> 

现在我会承担,我可以通过本地主机与ID = 1的用户访问该页面:3000 /用户/ 1,但是当我这样做,我收到错误:

Missing template users/show, application/show with {:locale=>[:en], :formats=>[:html], >:handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in: * "c:/Users /Evan/Desktop/reviewdraft/app/views" * "c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0 /gems/devise-3.4.1/app/views"

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

+0

尝试将'show.html.erb'移动到'app/views/users/show.html.erb'我猜测问题是当前位置不在控制器操作的预期位置。或者,你可以在动作中使用'render'来吐出文件的当前位置,但把它放在正确的位置可能会更清晰。 – Brian 2014-11-03 21:11:56

回答

4

从错误中可以清楚地看出,如果你注意到它:Missing template users/show。它要求您在用户目录中创建一个show.html.erb。

这里需要创建视图:应用程序/视图/用户/ show.html.erb没有色器件/注册/ show.html.erb,因为你从ApplicationController继承UsersController,这是不与Devise相关的方式。与此创建应用程序/视图/用户/ show.html.erb,然后再试一次:

<%= @user.name %> 
+0

非常感谢!我对Rails仍然很陌​​生,但在重新阅读这个答案和错误消息之后,它非常明显地表明了它的含义。现在工作正常! – Arw50452 2014-11-03 21:17:34

0

设计都有自己的看法。没有必要通过自己编写用户视图。为了生成视图使用这种生成:rails generate devise:views 所有需要的意见,将在应用程序/视图生成/设计 在那里,你可以通过current_user变量访问用户登录。

1

显示具有色器件CURRENT_USER/other_user概况:

After installing devise

创建用户控制:

rails generate controller Users 

然后创建一个表演动作,并找到使用参数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 %> 

这应该管用!

+0

routes.rb文件怎么样?这将是什么样子? – westman2222 2016-01-02 05:14:18

+0

安装设备会自动生成 - devise_for:users - 在routes.rb /你也可能想要添加 - resources:users - 如果你想检查生成的路由是否添加了两个 - 去你的终端并输入 - 耙路线 – 2016-01-02 16:27:17