【问题标题】:How do I get an array of check boxes in haml?如何在haml中获取一组复选框?
【发布时间】:2012-10-23 16:40:16
【问题描述】:

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

我正在使用haml来渲染html。

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

我看到只是把

= @theModels

会给我@theModels 中包含的字符串列表,但没有空格等,当然也不会出现在复选框中。我发现 this question 看起来很相似,但我的 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"}

这似乎符合我的要求。

【问题讨论】:

    标签: ruby checkbox sinatra haml


    【解决方案1】:

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

    哈希@params 会给你结果。

    例如{"橙子"=>"1"}

    #app.haml %form{:method => 'post', :action => "/"} - @models.each 做 |key,value| %br %input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value} =键 %input{:type => :submit, :value => "保存"} #app.rb 需要'sinatra' 需要'haml' 得到'/'做 @models = {“橙子”=> 真,“香蕉”=> 假} 哈姆:应用程序 结尾 发布'/'做 @params.inspect 结尾

    【讨论】:

    • 哦,非常接近!我认为这在原始问题中并不重要,但这些是用户同时上传的文件的选项。看看我更新的问题,我这里没有足够的空间来完成计划的其余部分
    • 我不认为第二个规范与原始规范非常接近。在我给出原始答案后,当您完全改变问题时,我感到很沮丧。去试试 oDesk.com
    • 嗯,使用你的答案,我能够让它工作,所以事实上,“非常接近”。感谢您的帮助,很抱歉让您生气了。
    • 我误解了你的第二个版本。我认为该文件应该包含替代方案。对不起我的反应。您可以不使用第二种形式,方法是取消“文件”按钮,使其不是循环的一部分。
    【解决方案2】:

    您提供的链接链接到 Rails 解决方案,您可以在该解决方案中使用返回正确 html 的函数。

    你可以自己定义这个函数:

    输入:键、值 输出:%input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value} def check_box(键,值) ... 结尾 并用 haml 调用它 =check_box(键,值)

    【讨论】:

      猜你喜欢
      • 2021-10-07
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 2017-10-04
      • 2014-08-16
      相关资源
      最近更新 更多