我正在尝试使用户看到许多选项(我目前正在尝试使用复选框)作为选择多个项目,然后在用户提交时变成用逗号连接的单个字符串,例如:
<%= f.check_box :answer %><%= option.description %>
<%= f.check_box :answer %><%= option.description %>
<%= f.check_box :answer %><%= option.description %>
其中:answer是我的Answer模型中的一个属性,description是我的Option模型中的一个属性,如果选择了多个选项,我希望将它们保存为单个字符串,如下所示:
"description1,description2,description3"
为了将其保存到我的数据库中的单个列,我该如何实现?
答案 0 :(得分:1)
您可以创建多个复选框,为其添加multiple
选项,这样您就可以:
<%= f.check_box :answer, { multiple: true }, 'first', false %>First
<%= f.check_box :answer, { multiple: true }, 'second', false %>Second
<%= f.check_box :answer, { multiple: true }, 'third', false %>Third
请注意,您还需要指定false
选项,以便#34;可以摆脱&#34;一组多个check_boxes生成的所有不需要的值,例如["0", "0", "second", "0", "third"]
,由于unchecked default values,所以,使用check_box
帮助器中的最后一个参数,只得["second", "third"]
1}}。
因此,现在只需要一个数组就可以在将对象持久化到数据库之前更容易地加入这些值,如果需要,可以直接在控制器中完成:
@answer = Answer.new(answer_params)
@answer.answer = params['answer']['answer'].join(',')
您可以在这里获得参数[&#39;回答&#39;],表单,特别是您创建的复选框中的值,因为它是您可以使用的数组{{1使用逗号join
加入,这样您就可以获得第二个,第三个&#34;,这样您就可以为自己设置答案属性具有多个复选框的答案模型。