为Devise用户创建具有CRUD操作的管理视图

时间:2013-08-13 17:46:25

标签: ruby-on-rails devise views admin

我第一次使用Rails 4 w / Devise并尝试为管理员构建一个查看用户和修改用户属性的视图。因此,我为我的Devise用户模型创建了一个新的布尔属性'admin'。但是,这个问题主要涉及构建管理视图,以便管理员具有可以在不同用户上使用的CRUD操作。

在测试'show'视图时,我在尝试显示特定用户的电子邮件地址时收到以下错误:

  

'未定义的方法`电子邮件'为nil:NilClass'

我的admins_controller看起来像这样:

 class AdminsController < ApplicationController
  def index
    @users = User.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @users }
    end
  end

  def show
  end

end

相应的'index'和'show'视图如下所示:

的观点/管理员/ index.html.erb'

    <h1>Listing users</h1>

<table>
  <tr>
    <th>User ID</th>
    <th>User Name</th>
    <th>Admin</th>
    <th>First Name</th>
    <th>Last Name</th>
    <th>Address</th>
    <th>City</th>
    <th>State</th>
    <th>Zipcode</th>
  </tr>

<% @users.each do |user| %>
  <tr>
    <td><%= user.id %></td>
    <td><%= user.email %></td>
    <td><%= user.admin %></td>
    <td><%= user.first_name %></td>
    <td><%= user.last_name %></td>
    <td><%= user.address %></td>
    <td><%= user.city %></td>
    <td><%= user.state %></td>
    <td><%= user.zip %></td>
    <td><%= link_to 'Show', user %></td>
  </tr>s
<% end %>
</table>

的观点/管理员/ show.html.erb'

<p id="notice"><%= notice %></p>

<p>
  <strong>Email:</strong>
  <%= @users.email %>
</p>

有没有人想到导致错误的原因?

1 个答案:

答案 0 :(得分:1)

当您在路线中执行resources admins时,#index操作实际上是/admins/,无需索引。因此,当您执行/admins/index时,实际上您认为您希望show采取行动index映射到params[:id]。您可以使用rake routes查看所有生成的路线。