对于双嵌套的has_many属性,Rails 5“没有将符号隐式转换为整数”

时间:2016-11-07 20:36:49

标签: ruby-on-rails

尝试通过表单创建/更新no implicit conversion of Symbol into Integer模型时,我一直收到错误Form。我已将其缩小为actions_attributes中与form_params有关的内容。如果trigger_attributes被删除,actions_attributes可以正常工作。我怀疑它与enum字段,双嵌套属性和/或has_many关系有关,但不确定。

关于可能导致此错误的任何想法?

运行Rails 5.0.x和Ruby 2.3.x,以及相关的模型和控制器。

class Form < ApplicationRecord
  has_one :rule
  accepts_nested_attributes_for :rule
end

class Rule < ApplicationRecord
  has_one :trigger
  has_many :actions
  accepts_nested_attributes_for :trigger
  accepts_nested_attributes_for :actions
end

class Trigger < ApplicationRecord
  belongs_to :rule
  enum name: [:example]
end

class Actions < ApplicationRecord
  belongs_to :rule
  enum name: [:example]
end

class FormsController < ApplicationController
  ...
  private

  def form_params
      params.require(:form).permit(
        :title,
        :description,
        rule_attributes: [
                           trigger_attributes: [:name],
                           actions_attributes: [:name]
                         ]
      ) 
  end
end

1 个答案:

答案 0 :(得分:0)

我通过将actions_attributes:更改为actions:下的def form_params,以及对表单进行相关更改,将fields_for :actions_attributes更改为fields_for :actions,从而实现了此目的}。

我经常感到困惑何时使用_attributes以及何时不使用<button onclick="saveFile()">Save XLSX file</button> 。如果有人有关于何时使用哪些信息,如果您能提供评论中信息的链接,我将不胜感激。感谢。