【问题标题】:How to append an array in parameters after Rails form submit?Rails表单提交后如何在参数中附加数组?
【发布时间】:2021-09-29 09:51:38
【问题描述】:

我有一个带有复选框的表单,这些复选框在表单提交时作为数组“list_person_ids”传递。我的模型是“Occurance”,它通过模型“Person”与“ListPerson”有 n:m 关系。 “list_person_ids”以 Occurance id 和 ListPerson id 保存在 Person 中。

我想在保存之前将一个或多个值附加到数组中。我需要这样做的原因是,用户还可以使用名称为“person_name”的文本框在 ListPerson 中添加新值。

def create
  @occurance = Occurance.new(occurance_params)
  add_person_id(@occurance)
  ...
  # save
end

def add_person_id(object)
  if params[:person_check] == '1'
    object.list_person_ids.push( ListPerson.find_or_create_by(person: params[:person_name]).id )
  end
end

def occurance_params
  params.require(:occurance).permit(:person_check, :person_name, dim_person_ids: [])
end

find_or_create_by 成功,但没有任何东西被推送到数组“list_person_ids”。也没有错误信息。我是否必须在某处授予权限才能附加此数组?如果缺少某些信息,请告诉我。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-6


    【解决方案1】:

    在您的模型上,您可以执行以下操作:

    ....
    
    before_create :create_lists
    
    private
    
    def create_lists
      ListPerson.find_or_create_by(list_person_ids: person_name.id)
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 2023-04-08
      相关资源
      最近更新 更多