我第一次使用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>
有没有人想到导致错误的原因?
答案 0 :(得分:1)
当您在路线中执行resources admins
时,#index
操作实际上是/admins/
,无需索引。因此,当您执行/admins/index
时,实际上您认为您希望show
采取行动index
映射到params[:id]
。您可以使用rake routes
查看所有生成的路线。