Rails - 使关联复选框出现在下拉列表中,而不是阵列

问题描述:

我正在使用simple_form gem呈现复选框。这里是我的代码:Rails - 使关联复选框出现在下拉列表中,而不是阵列

<tr> 
    <th>Authors</th> 
    <td><%= f.association :authors, as: :check_boxes, label: false %></td> 
</tr> 

的问题是,我的收集上显示的是一个这样的数组: terrible for UX!!

我如何获得这个阵列的复选框将在下拉列表格式呢?

+0

从文档中,你可以传递一个块到'f.association'(https://github.com/plataformatec/simple_form/blob/master/lib/simple_form/form_builder.rb#L181),这样你就可以传递一个块用check_box,标签和'
'分块。如果你想要更复杂的东西(比如3列均匀分布的复选框+标签),你需要手动循环这些可能的作者。 – MrYoshiji

你试过collection_select

会是这个样子:

<%= collection_select(:author, :name, Author.all, :id, :name_with_initial, prompt: true) %> 

希望它能帮助, 干杯

找到了解决办法!我发现了this blog post并使用了item_wrapper_tag:帮手,我在我的f.association代码上使用了这个帮助器。这让我可以在一系列复选框中添加div。然后我给了它一个类,所以我可以使用CSS来设置这个div的样式为inline-block

<tr> 
    <th>Authors</th> 
    <td><%= f.association :authors, as: :check_boxes, item_wrapper_tag: :div, item_wrapper_class: "inline_block", label: false %></td> 
</tr> 

哪个产生了这个结果。内容现在在垂直列表中而不是数组中。

enter image description here

我需要捅周围多一点与CSS的滚动盒中含有它,但总体来说这个解决方案为我工作。