如何获取haml中的一系列复选框?

我在作为Sinatra服务器的一部分实现的例程中有一个名为@theModels的字符串数组。 这些模型是供用户选择的选项,由后端获取(想法是,随着新模型的添加,前端代码不应更改)。

我正在使用haml来渲染html。

如何枚举@theModels列表中的每个元素,使每个元素都是一个复选框? 如何获取用户选择的复选框?

我看到只是放

= @theModels 

将给我@theModels中包含的字符串列表,但没有间距等,当然也不在复选框中。 我发现这个问题似乎很相似,但我的haml-fu还不够好,无法将其转化为我需要的东西。

更新:

这些是与文件上传相关的选项,现在代码如下所示:

 %form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"} - @theModelHash.each do |key,value| %br %input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value} =key %input{:type=>"file",:name=>"file"} %input{:type=>"submit",:value=>"Upload"} 

问题是,在每个选项上放置文件上传按钮,而不是在最后。 我最后只想要一个提交按钮; 我应该有两个表单,当按下“上传”按钮时,它们都会报告结果吗?

UPDATE2:

经过一段时间的思考,上面的内容可以修改为:

谢谢!

 %form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"} - @theModelHash.each do |key,value| %br %input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value} =key %form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"} %input{:type=>"file",:name=>"file"} %input{:type=>"submit",:value=>"Upload"} 

这似乎做我想要的。

我认为你应该把内容作为哈希发送。 这将使您有机会在表单中设置初始值。

哈希@params将为您提供结果。

例如{“oranges”=>“1”}

 #app.haml

 %form {:method =>'post',:action =>“/”}
   -  @ models.each do | key,value |
     %BR
     %input {:type =>“checkbox”,:name =>“#{key}”,:value => 1,:checked => value}
     =键
   %input {:type =>:submit,:value =>“Save”}

 #app.rb

要求'sinatra'
要求'haml'

得到'/'做
   @models = {“oranges”=> true,“bananas”=> false}
   haml:app
结束

发帖'/'做
   @ params.inspect
结束

您提供的链接链接到rails解决方案,其中您有一个函数返回正确的html。

您可以自己定义此function:

输入:键,值

输出:%input {:type =>“checkbox”,:name =>“#{key}”,:value => 1,:checked => value}

 def check_box(键,值)

       ...

结束

并用haml调用它 

 = check_box(键,值)