2014-09-30 35 views
0

訪問鍵我有以下散列:從哈希其值是數組在紅寶石

@types = {"source-1"=>["type1", "type2"], "source-2"=>["type3", "type4"]} 

我做我的HAML如下:

%ul 
     - @types.values.flatten.each do |type| 
     - if @sources.include? type 
      %input#types{:name => "types[]", :type => "checkbox", :value=> "#{type}", checked: :true, readonly: "readonly"}/ 
      %label{:for => "types"} "#{type}" 
     - else 
      %input#types{:name => "types[]", :type => "checkbox", :value=> "#{type}"}/ 
      %label{:for => "types"} "#{type}" 

這樣做有助於我顯示不同用複選框適當地鍵入。我想在%input#types中加入一個額外的標籤,如source_id,這樣我就可以將每種類型與源代碼關聯起來。例如

%input#types{:source_id = source-1 , :name => "types[]", :type => "checkbox", :value=> type2 , checked: :true, readonly: "readonly"}/ 

這裏source_idsource-1type2屬於source-1

有沒有這樣做不必做@types.map{|k,v|k if v.include?type}-[nil]標籤內的HAML的一個簡單的方法

我也將能夠訪問source_id控制器所選類型

回答

0

試試這個:

- @types.each do |source,types| 
    - types.each do |type| 
    - if @sources.include? type 
     %input#types{ :source_id => source, :name => "types[]", :type => "checkbox", :value=> "#{type}", checked: :true, readonly: "readonly"}/ 
     %label{:for => "types"} "#{type}" 
    - else 
     %input#types{ :source_id => source, :name => "types[]", :type => "checkbox", :value=> "#{type}"}/ 
     %label{:for => "types"} "#{type}"