让用户为管理员和普通用户编制索引

时间:2012-02-21 04:41:51

标签: ruby-on-rails ruby ruby-on-rails-3

我想让用户索引页面分别列出管理员和普通用户,下面你可以选择学生或管理员视图,通过我认为是链接......

用户的索引视图......

<h1>Listing users</h1>

<p><b><u>Students</u></b> <u>Admins</u></p>

<table>
  <tr>
    <th>Email</th>
    <th>Login count</th>
  </tr>

<% @users.each do |user| %>
  <tr>
    <td><%= user.email %></td>
    <td><%= user.login_count %></td>
  </tr>
<% end %>
</table>

<p><%= link_to 'New User', new_admin_user_path %></p>

在我的用户控制器中

class Admin::UsersController < ApplicationController
    before_filter :require_admin_user

    def index
      # @users = User.admin 
      @users = User.students.paginate page: params[:page], order: 'created_at desc', per_page: 20

      respond_to do |format|
        format.html # index.html.erb
        format.json { render :json => @users }
      end
    end

这可能吗?

2 个答案:

答案 0 :(得分:1)

我认为答案取决于普通用户(学生?)与管理员之间存在哪些差异,以及您希望展示的有关这类用户的内容。

如果您想显示哪些用户是管理员,您可以在Users#index操作中获取一个参数,仅显示管理员(我不知道它是否是Rails方式)。

如果您想为学生/管理员显示更多/不同的信息,可能最好为学生建立一个模型,为管理员创建另一个模型,使用单独的控制器扩展用户模型并在#index操作之间切换。

你能更好地解释一下你需要维护/展示什么样的信息吗?感谢

答案 1 :(得分:1)

如果您为这两个表设置了两个不同的表,则执行另一个视图将是最简单的方法。顶部链接可能就是您想要的方式。

<p><b><u><%= link_to 'Students', user_path %></u></b> <u><%= link_to 'Admin', admin_path %></u></p>

您是否有理由设置一个表合并所有用户,然后使用一列来区分他们是否是管理员?这样可以更轻松地完成您所需要的工作。