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 の undefined method `uemployee'」というメッセージが表示されます

私は何を間違っていますか?

ありがとう

4

2 に答える 2

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は変数の「内部」にあるすべてのユーザーを循環し、@users1人ずつ表示します。

于 2012-04-26T20:16:19.293 に答える
0

あなたの@usersコレクションはゼロです

于 2012-04-26T20:12:13.193 に答える