RoR范围问题

时间:2012-04-26 20:09:15

标签: ruby-on-rails activerecord

我有一个用户表。它包含一个字段“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| %>

但是,我得到“未定义的方法`uemployee'为nil:NilClass”

我做错了什么?

由于

2 个答案:

答案 0 :(得分:0)

您的@users收藏品为零

答案 1 :(得分: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变量“内部”的所有用户并逐个显示它们。