Rails:为设计用户创建索引视图
Posted
技术标签:
【中文标题】Rails:为设计用户创建索引视图【英文标题】:Rails: Creating an index view for a devise user 【发布时间】:2013-05-31 15:34:06 【问题描述】:这是一个新项目,如果有人在这个方向上提供建议,那么抓取和重新启动将很容易。本质上,我使用以下方法创建了用户:
rails generate devise users
但现在我想创建一条到 users#index 页面之类的路由来显示所有用户。当我运行rake routes
时,我找不到任何似乎适用的路线@
我的下一个想法是使用rails generate scaffold user
来尝试生成这样的视图和控制器功能。这不起作用。
我对 Rails 比较陌生,但对它有相当大的了解。我刚开始使用设计,所以这部分让我最困惑,我用它来验证。我四处寻找帮助并研究了devise page很多,但无济于事。
只是一些额外的信息。当我尝试路由http://localhost:3000/users
时,我得到uninitialized constant UsersController
,但是当我添加一个用户控制器时,它只是抱怨别的东西。我尝试了其他几件事,但不想通过深入探讨所有问题来淡化问题。
【问题讨论】:
【参考方案1】:Devise 在 gem 库目录中隐藏了自己的控制器和视图。您可以将视图拉入您的项目进行编辑,但控制器没有类似的东西。有关示例,请参阅Devise documentation。
为此生成您自己的控制器和视图非常容易:
config/routes.rb:
# NOTE: put this after the 'devise_for :users' line
resources :users, only: [:index]
app/controllers/users_controller.rb:
class UsersController < ApplicationController
def index
@users = User.all
end
end
app/views/users/index.html.erb:
<ul>
<% @users.each do |user| %>
<li><%= user.name %></li>
<% end %>
</ul>
这是一个适合您的极简示例。
您可能需要考虑使用ActiveAdmin,如果您不需要像应用程序的公共部分那样设置它的样式。为您省去编码、样式和保护应用程序所需的许多基本记录管理实用程序的麻烦。我使用 ActiveAdmin,然后如上所述滚动我自己的控制器/视图/路由,以便在应用程序的公共部分显示用户列表。
【讨论】:
这是有道理的,我只是不知道设计是否受到干扰。我今天晚些时候试试【参考方案2】:Devise 将处理注册和登录/注销。它不会做任何其他事情。索引是 Rails 中典型的控制器动作。当您生成用户脚手架时,您是否添加了任何额外的参数? Rails getting started 有基本文档。向下滚动到关于脚手架的第 6 部分。当你生成一个脚手架时,你会创建一个模型、一个视图和一个控制器。该教程的第 7 节从头开始生成模型。在您的情况下,用户模型可能有一个名称字符串和一个电子邮件字符串。模型可以具有许多属性,例如布尔值或整数。 (您将需要添加设计属性以进行身份验证,例如密码,但可以稍后添加。)因此请尝试再次生成脚手架,但使用rails generate scaffold user name:string email:string
。这会将姓名和电子邮件列添加到您的用户模型中。从那里,脚手架应该为您设置控制器和基本视图中的默认操作。然后你应该有你的索引操作。
【讨论】:
以上是关于Rails:为设计用户创建索引视图的主要内容,如果未能解决你的问题,请参考以下文章