2013-10-30 59 views
-1

我有下面這段代碼HAML:如何獲得陣列之間罕見的元素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

什麼是角色和角色:: ROLES – iouri

回答

0

做到這一點`

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

首先,讓我們所有的邏輯和數據連接你的看法。此外,您需要聯合運營商,而不是交叉路口。

在你的控制器:

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

值謝謝你的答覆,但|似乎不起作用,但給了我共同的價值觀。 –

+0

是的,'&'會給你共同的價值。但在你的問題中,你要求**不是**常見的價值。無論如何,只需切換操作員,看看它是如何發展的。 – depa