我有以下散列:
@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}"这样做可以帮助我使用复选框适当地显示不同的类型。我想在源中包含一个额外的标记,比如source_id,这样我就可以将每种类型与%input#types -id关联起来。例如
%input#types{:source_id = source-1 , :name => "types[]", :type => "checkbox", :value=> type2 , checked: :true, readonly: "readonly"}/这里的source_id是source-1是type2属于source-1。
有没有比在haml中的标记内执行@types.map{|k,v|k if v.include?type}-[nil]更简单的方法呢?
我还可以在控制器中访问所选类型的source_id
发布于 2014-10-01 00:50:33
试试这个:
- @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}"https://stackoverflow.com/questions/26125968
复制相似问题