【问题标题】:how do i get params as array in ruby on rails?如何在 ruby​​ on rails 中获取参数作为数组?
【发布时间】:2020-07-21 13:13:29
【问题描述】:

我的控制器中有以下内容

    def invoice_params
      params.require(:invoice).permit({items: [:items]}, :price, :tax, :discount, :sum)
    end

在我的_form中

<td><input  size="8" <% form.text_field :items  %> /></td> [pants]
<td><input  size="8" <%= form.text_field :items %> /></td> [spoon]
<td><input  size="8" <%= form.text_field :items %>/></td>  [nil]
<td><input  size="8" <%= form.text_field :items  %> /></td> [nil]
<td><input  size="8"  /></td>

所以我希望我的数组像 ["pants","Spoon",nil,nil]

使用这种风格,我的服务器出现以下错误

Started POST "/invoices" for 10.0.2.1 at 2020-04-09 00:46:55 +0000
Cannot render console from 10.0.2.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1
Processing by InvoicesController#create as HTML
  Parameters: {"authenticity_token"=>"94T3Stght1p9n9Bo44+lvS7CMnE5PEkuic5DP8ifYH4yxY5roVt19ZHpL6sIaiO31i/S5DADP+/ffNG3wdobLQ==", "invoice"=>{"items"=>"das", "tax"=>""}, "commit"=>"Create Invoice"}
**Unpermitted parameter: :items**

【问题讨论】:

  • 但是,看起来您并没有将它们作为数组发送到您的服务器。您打算如何将 text_field 内容转换为数组?
  • 所以我可以用别的东西代替它吗?我不知道我在 Rails 中是新的,我想如果我得到相同的输入,当我把 params[:items] 放入控制器时,它会是一个数组
  • 我从来没有真正掌握form_for 的窍门(以及所有 Rails 的表单构建方法),但我知道至少你可以通过手写表单来做到这一点,请参阅 @ 987654321@。另请查看有关该问题的其他一些答案。

标签: ruby-on-rails ruby parameters


【解决方案1】:
<input type="text" name="invoice[items][]" value="pants">
<input type="text" name="invoice[items][]" value="spoon">

将参数作为数组提供给您:{ invoice: { items: ["pant", "spoon"] } }

<input type="text" name="invoice[items][1]" value="pants">
<input type="text" name="invoice[items][2]" value="spoon">

会将参数作为 HASH 提供给您:{ invoice: { items: { "1": "pant", "2": "spoon" } } }

对于您的问题,您需要手动指定 名称,如下所示:

<td><%= form.text_field name: "invoice[items][]" %> /></td>
<td><%= form.text_field name: "invoice[items][]" %> /></td>
<td><%= form.text_field name: "invoice[items][]" %> /></td>
<td><%= form.text_field name: "invoice[items][]" %> /></td>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多