2017-09-07 49 views
0

我想在form_for中创建一个select标签,我可以从选项中选择多个类别。我看过Rails documentation和这个SO,但他们都没有工作。到目前为止,我有这样的:如何在form_for中创建选择标签Rails

<select class="selectpicker" data-style="form-control" multiple title="Choose Department(s)" data-size="5"> 
    <%= options_from_collection_for_select(Category.all, :id, :name)%> 
</select> 

而且我的form_for看起来是这样的:

<%= form_for(@listing, :html => {class: "form-horizontal" , role: "form"}) do |f| %> 

我的列表可以有很多种类。我应该如何将这个保存到我的表格?现在,当我提交表单时,这些类别不会保存。

+0

所以,你有选择多个项目的权利问题吗? – Mohanraj

+0

不,选择标记正常工作。我可以选择多个类别,但在提交表单时不会保存到数据库。 –

+0

什么是字段名称?还发布一些红宝石代码和参数。 – Mohanraj

回答

1

这不起作用,因为您的选择范围不在您的@listing对象范围内。尝试:

<%= f.collection_select(:category_id, Category.all, :id, :name) %> 

为了解决@ ddubs的评论暗示,以取代select标签用Rails的形式助手以及保持您的自定义HTML数据属性:

<%= f.collection_select(:category_ids, Category.all, :id, :name, {}, class: "selectpicker", title: "Choose Department(s)", multiple: true, data: { style: "form-control", size: "5" }) %> 

有关collection_select选项的详细信息,请查看在Rails api

+0

所以我把'<%= f.collection_select(:category_ids,Category.all,:id,:name, class:“selectpicker”,data-style:“form-control”,multiple:true,title:“Choose Department(s)”,data-size:“5”)%>'它会抛出一个错误。我认为这是因为数据风格和数据大小的连字符。任何想法如何使这可以被认为是我想改变的选择标签的属性? –

+0

更新了我的答案。您可以使用'data:{size:5,style:'form-control'}'来传递自定义HTML属性(例如HTML5'data-')。 – mmichael

+0

我结束了使用'%= f.collection_select(:category_ids,Category.all,:id,:name,{:“data-style”=>“form-control”,multiple:true,:“data-size “=>”5“},{class:”selectpicker“,标题:”选择部门“})%>'。现在唯一的问题是“多个”不起作用。 –

0

最终答案最终为<%= f.collection_select(:category_ids, Category.all, :id, :name,{:"data-style" => "form-control", :"data-size" => "5"}, {class: "selectpicker", title: "Choose Department(s)", multiple: true}) %>,正如mmichael指出的那样。