多选择将空字符串发送到Rails控制器

时间:2013-09-23 23:43:49

标签: ruby-on-rails forms ruby-on-rails-4 selection form-for

我有tradie模型,其中包含许多tradie_category个模型。在tradie的形式中,我添加了以下内容:

= form_for @tradie do |tradie|
  = tradie.select :tradie_category_ids, @categories, {}, { multiple: true }

在HTML中,生成以下内容......

<form accept-charset="UTF-8" action="/add_a_tradies/create" class="new_tradie" method="post">
  <input name="tradie[tradie_category_ids][]" type="hidden" value="">
  <select class="form-control" id="tradie_tradie_category_ids" multiple="multiple" name="tradie[tradie_category_ids][]">
    <option value="2">mechanic</option>
    <option value="1">plumber</option>
  </select>
</form>

我删除了真实性令牌并提交了按钮,因为我的问题没有必要。每当我发布表单时,参数tradie_category_ids将作为空字符串返回。有什么问题,如何修复它,以便我可以为创建的tradie创建多个tradie类别。?

2 个答案:

答案 0 :(得分:8)

此问题似乎也在另一个问题中报告:Why is the first element always blank in my Rails multi-select, using an embedded array?

他们概述了它的规范以及如何在Rails 4中解决它。第二个最受欢迎的响应说明了如何同时应用它的修复。

答案 1 :(得分:1)

试试这个

= form_for @tradie do |tradie|
  = tradie.select :tradie_category_ids, @categories, {}, { multiple: "true" or 'true' }

注意

周围的引号
{ multiple:  "true" or 'true'  } in