我有以下HAML代码:
%li
%label
#{t('Registrations.new.CheckBoxHeader')}
%abbr.required{title: t('Registrations.new.Required')} *
- if !current_user.roles.blank?
- current_user.roles.each do |roles|
- (roles[:name] & Role::ROLES).each do |role|
%input#roles{name: "access[]", type: "checkbox",value:"#{role}"}/
%label{for: "roles"} #{role}
- else
- Role::ROLES.each do |role|
%input#roles{name: "access[]", type: "checkbox",value:"#{role}"}/
%label{for: "roles"} #{role}
我希望仅显示roles[:name]
和Role::ROLES
之间不常见的复选框中的那些角色。
我知道我在做错事。我知道Ruby中的&
给出了交集,但这似乎也没有用。
答案 0 :(得分:0)
做这个`
unless Role::ROLES.include?(roles[:name])`
答案 1 :(得分:0)
首先,让我们从您的视图中获取所有逻辑和数据耦合。此外,您需要union运算符,而不是交集运算符。
在您的控制器中:
@roles = current_user.roles.pluck(:name) | Role::ROLES
这会让你的观点更加清晰:
%li
%label
#{t('Registrations.new.CheckBoxHeader')}
%abbr.required{title: t('Registrations.new.Required')} *
- @roles.each do |role|
%input#roles{name: "access[]", type: "checkbox",value:"#{role}"}/
%label{for: "roles"} #{role}