2014-09-30 59 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}"