【问题标题】:How to submit an array of integers in a Rails form?如何在 Rails 表单中提交整数数组?
【发布时间】:2015-06-24 04:47:50
【问题描述】:

我想知道是否有办法在 Rails 表单中添加某种输入字段,这样如果用户输入1, 2, 3,那么params[:model][:attribute] 返回[1, 2, 3] 或至少['1', '2', '3'],但不是['1, 2, 3']

背景:

我有一个模型Foo,它有一个属性bar_ids。 PostgreSQL 数据库中此属性的数据类型为Array。我已经尝试了几件事:

  • 如果f.text_field :bar_ids 那么params[:foo][:bar_ids] 返回'1, 2, 3'
  • 如果f.text_field_tag 'foo[bar_ids][]' 那么params[:foo][:bar_ids] 返回['1, 2, 3']
  • 如果f.number_field :bar_ids 然后params[:foo][:bar_ids] 返回'1' 如果我只输入1 并且表单不允许输入多个数字

所以,我的问题又来了 - 有没有办法以这种方式构造我的表单,以便 Rails 自动将输入解析为相应的数据类型,在我的例子中 - 一个整数数组?

【问题讨论】:

    标签: ruby-on-rails arrays forms postgresql params


    【解决方案1】:

    人们通常在更新模型之前手动编辑params

     params[:model][:attribute] = params[:model:][:attribute].split(',')
     # ...
     Model.update_attributes(params[:model])
    

    通常在控制器操作或before_action 中完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 2011-03-06
      • 2013-08-09
      • 1970-01-01
      • 2012-05-09
      • 2020-04-12
      相关资源
      最近更新 更多