如何根据用户点击显示数据库结果? (Rails)

How do I show database results, based on what the user clicks? (Rails)

如果这是一个愚蠢的问题,我深表歉意,但看起来我仍然不确定 Rails 在制作额外页面时应该如何工作。

我有一个设计用户模型(和一个用户控制器),每个用户都有一个整数字段“account_type”- 0 代表管理员,1 代表经理,2 代表呼叫者。

我知道如何使用索引页来展示所有类型的用户。但是,如何制作一个根据我点击的内容显示结果的页面?例如,我在菜单中有 3 个按钮:

  1. 管理员
  2. 经理
  3. 来电者

当我点击管理员时,我应该只会看到管理员。当我点击经理时,我应该只会看到经理等。

这就是我对控制器的全部了解,现在确定如何更改它,但还不确定如何 link 视图中的新页面。

class UsersController < ApplicationController

def index 
    @users = Users.all
end

end

简单且 RESTful 的方法是为每种类型创建不同的路由:

resources :admins, only: [:index]
resources :managers, only: [:index]
resources :callers, only: [:index]

这会创建路由 /admins/managers/callers,每个路由都去往一个单独的控制器:

class AdminsController
  # GET /admins
  def index
    @users = User.admin 
    render 'users/index'
  end
end

class ManagersController
  # GET /managers
  def index
    @users = User.manager
    render 'users/index'
  end
end

class CallersController
  # GET /callers
  def index
    @users = User.caller
    render 'users/index'
  end
end

要创建适用于每种类型用户的按钮,最简单、最容易访问的方法是使用良好的旧链接并将它们设置为看起来像按钮的样式。

<%= link_to 'Admins', admins_path %>
<%= link_to 'Managers', managers_path %>
<%= link_to 'Callers', callers_path %>

您还想设置 ActiveRecord::Enum 来处理您的整数列:

class User < ApplicationRecord
  # ...
  enum account_type: {
    admins: 0,
    managers: 1,
    callers: 2
  }
end

如果需要,下一步将是重构和减少重复。