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:为设计用户创建索引视图的主要内容,如果未能解决你的问题,请参考以下文章

为设计用户创建带有 CRUD 操作的管理视图

Rails 在视图呈现后登录用户

Rails 5:使用 AJAX 编辑索引上的用户角色

Ruby on rails,改变最近创建的脚手架

Ruby on rails 协会 - 用户(设计)在注册和登录后可以“创建团队”或“加入团队”

视图序列索引的创建及用户权限