【问题标题】:Multiple Select Sending Empty String to Rails Controller多选发送空字符串到 Rails 控制器
【发布时间】:2013-09-23 23:43:49
【问题描述】:

我有一个 tradie 模型,其中包含许多 tradie_category 模型。在交易者的表格中,我添加了以下内容:

= 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 都会作为空字符串返回。出了什么问题以及如何解决它,以便我可以为创建的传统创建多个传统类别。?

【问题讨论】:

  • 在你的控制器中,你能做一个puts params.inspect 并告诉我们结果是什么吗? (当然,请确保您在 tradie 类别 ID 中选择了一些内容):)
  • 是的,我已经这样做了::tradie_category_ids =&gt; ""
  • &lt;input name="tradie[tradie_category_ids][]" type="hidden" value=""&gt; 这个隐藏字段是从哪里来的?它会覆盖您的选择吗?
  • @jason328 - 但我们想看看剩下的... :)
  • @tihom 我不确定它来自哪里。 Rails 本身正在创建它。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    试试这个

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

    注意周围的引号

    { multiple:  "true" or 'true'  } in 
    

    【讨论】:

    • 这行得通吗?你在哪个版本的 Rails 上试过这个?
    • @Swapnil,我想是去年,我猜是 Rails 3.2
    • 我用 rails 3.2.11 试过这段代码,但它不适合我。
    猜你喜欢
    • 2019-12-28
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2018-04-01
    相关资源
    最近更新 更多