如何在 Rails 和 haml 中创建多个选择

How to create multiple selects in Rails and haml

我有一个 table 数据如图所示

id | Resource | Access
___________________________
1 | Fee records | can_read
2 | Fee records | no_access
3 | Fee records | can_write
4 | Class register | can_read
5 | Class register | no_access
6 | Class register | can_write

我想创建一个 haml select,这样 resource 就在左边,access 作为 select 的选项。像

Fee records -> [can_read, no_access, can_write]
Class register -> [can_read, no_access, can_write]

当用户 selects can_read 选项在 Fee Records 下,我希望从上面的 table 中取回 ID 1,当 no_access Class register 下的选项是 selected,我希望得到 id 6。所以基本上我会有两个 select,但是选项 selected 必须 return 来自上面 table 的 id。 resource 也不应该重复。在这种情况下,只有 Fee recordsClass register 应该在左侧,相应的选项作为右侧的下拉列表。我如何在 Ruby 在 Rails 和 haml 上实现这一目标?

这就是我为解决上述问题所做的。在控制器的新方法中,我有

def new
 @permissions = ["no_access", "can_read", "can_write"]
 @unique_permissions = Model.select(:resource).map(&:resource).uniq
end

@unique_permissions = Model.select(:resource).map(&:resource).uniq 帮助我从上面的 table 中获取唯一值,因此我将收集 [Fee_records, Class_register]

在火腿里,我要

- @unique_permissions.each do |permission|
      .row
        .col-md-4
          = permission
        = f.select permission, @permissions, {}, class: "form-control col-md-8"
  

这将给我两个 select,其中 @permissions 数组包含 ["no_access", "can_read", "can_write"] 作为每个 select 的选项。 在控制器中,我将允许 Fee_recordsClass_register 的参数 在创建操作中,我将从参数中获取 permission_keys,基本上是获取 [Fee_records、Class_register] 作为键。 要获取与用户编辑的 select 选项相关的特定 ID,我将循环遍历

之类的键
permission_keys.each do |permission|
  permission_id = Model.find_by(
    resource: permission, access: permission_params[:permission]
   ).id
  # other code
end