0

我有一个用户表。它包含一个字段“user_type”。我将以下范围 stmts 添加到 user.rb 文件中:

scope :uemployee, where(:user_type => 'employee')
scope :uclient, where(:user_type => 'client')
scope :ucontractor, where(:user_type => 'contractor')

我创建了一个视图,我希望它列出他的员工。这是我尝试使用的代码:

 <% @users.uemployee.each do |user| %>

但是,我得到“nil:NilClass 的未定义方法‘uemployee’”

我究竟做错了什么?

谢谢

4

2 回答 2

0

你的@users收藏是零

于 2012-04-26T20:12:13.193 回答
0

看起来你想这样做:

<% User.uemployee.each do |user| %>

但这被认为是一种不好的做法。您必须在控制器中准备数据,并且视图只是循环通过它:

# in a controller's action
@users = User.uemployee

#in a view
<% @users.uemployee.each do |user| %>

但即使这也不是最好的方法。如果您创建views/users/_user.html.erb显示有关特定用户的信息的文件(当前用户将作为简单user变量提供,没有@),那么您可以简单地编写:

# in a view
<%= render @users %>
# remember, @users variable was set in your controller

然后 Rails 将循环遍历@users变量“内部”的所有用户并一一显示。

于 2012-04-26T20:16:19.293 回答