0

我正在尝试根据当前用户的属性在页面上显示用户列表。如果当前用户的实例变量名为 :position 为“High School”,则列出所有具有 :position “College”的用户(反之亦然)。我知道我在控制器中使用 if else 语句执行此操作,但我无法弄清楚查询调用应该是什么。现在我有:

if current_user.position= "High School"
  @user = User.all
else
  @user= User.all

作为模板。但是,我需要切换 @user= 语句,但我不知道如何限制它。有什么帮助吗?谢谢!

<% @quizzes.each do |quiz| %>
  <tr>
    <td><h6><%= quiz.userName%></h6></td>
    <td><h6><%= quiz.q1 %></h6></td>
    <td><% for q in quiz.q2 %>
      <% if q != nil %>
        <h6><%= q  %></h6>
      <% end %>
    <% end %>
    <td><h6><%= quiz.q3 %></h6></td>
    <td>X</td>
  </tr>
4

3 回答 3

2

一种可能的解决方案是scope在模型类中使用。

在用户模型中定义范围

class User < ActiveRecord::Base
  ...

  scope :college,    where(position: 'College')
  scope :highschool, where(position: 'High School')
end

在你的控制器中,

if current_user.position == "High School"
  @users = User.college
else
  @users = User.highschool
end

希望会有所帮助。

于 2012-05-03T00:27:10.043 回答
2

导轨 3:

if current_user.position == "High School"
   @user = User.where(:position => "College")
else
   @user = User.where(:position => "High School")
end

导轨 2:

if current_user.position == "High School"
  @user = User.find_all_by_position("College")
else
  @user = User.find_all_by_position("High School")
end
于 2012-05-03T00:29:29.703 回答
1

也许这就是你要找的?

if current_user.position == "High School"
   @users = User.where(:position => "College")
else
   @users = User.where(:position => "High School")
end
于 2012-05-03T00:28:39.470 回答