【问题标题】:How to get uncommon elements between arrays in HAML如何在 HAML 中的数组之间获取不常见的元素
【发布时间】:2013-10-30 22:02:00
【问题描述】:

我有以下一段 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 中的 & 给出了交集,但这似乎也不起作用。

【问题讨论】:

  • roles 和 Role::ROLES 的值是什么

标签: ruby-on-rails haml


【解决方案1】:

这样做`

unless Role::ROLES.include?(roles[:name])`

【讨论】:

    【解决方案2】:

    首先,让我们将所有逻辑和数据耦合排除在您的视野之外。此外,您需要联合运算符,而不是交集运算符。

    在您的控制器中:

    @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}
    

    【讨论】:

    • 感谢您的回复,但是 |似乎不起作用,但 & 给了我共同的价值观。
    • 是的,& 会给你共同的价值观。但是在您的问题中,您要求 not 共同价值观。无论如何,只需切换运营商,看看情况如何。
    猜你喜欢
    • 2019-06-15
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2018-09-02
    • 1970-01-01
    • 2015-02-21
    相关资源
    最近更新 更多