如何在 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 records
和 Class 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_records
和 Class_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
我有一个 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 records
和 Class 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_records
和 Class_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