1

我第一次使用带有设计的 Rails 4 并尝试为管理员构建一个视图来查找用户和修改用户属性。因此,我为我的 Devise User 模型创建了一个新的布尔属性“admin”。但是,这个问题主要与构建管理员视图有关,因此管理员具有可用于不同用户的 CRUD 操作。

在测试“显示”视图时,尝试显示特定用户的电子邮件地址时出现以下错误:

'nil:NilClass'的'未定义方法'email'

我的 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.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>

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

4

1 回答 1

1

当您resources admins在您的路线中执行时,该#index操作实际上/admins/不需要索引。所以当你这样做的时候,它实际上是在想你想用mapped to/admins/indexshow行动。您可以使用查看所有生成的路线。indexparams[:id]rake routes

于 2013-08-13T18:31:57.113 回答