在作为 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"}
问题是,这会在每个选项上放置一个文件上传按钮,而不是在最后。最后我只想要一个提交按钮;当按下“上传”按钮时,我应该有两种报告结果的表格吗?
更新2:
想了想,上面可以修改为:
谢谢!
%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"}
这似乎做了我想要的。