【问题标题】:Undefined method `to_hash' while saving with reform gem使用改革 gem 保存时未定义的方法“to_hash”
【发布时间】:2014-06-23 13:38:52
【问题描述】:

我遇到了问题。我在我的 Rails 应用程序中使用了带有一些复杂表单的改革 gem。不幸的是,我在创建表单时卡住了。这是我的代码:

class Order::Form < Reform::Form
  include Coercion
  include Composition
  include Reform::Form::ActiveRecord

  property :subscription, on: :order
  property :due_date, type: Date, on: :order
  property :start_fee, numericality: true, on: :order

  collection :products, populate_if_empty: Product, on: :order do
    property :type
    property :budget
  end

  property :campaign, on: :order do
    property :customer_id

    property :customer do
      property :id
      property :organization_number
    end
  end

  model :order

  def persist!(params)
    if validate(params)
      binding.pry
      # begin
        ::ActiveRecord::Base.transaction do
          save do |data, map|
            ...
          end
        end
      # rescue Exception
      #   false
      # end
    end
  end
end

当我尝试保存时收到此错误:

NoMethodError - undefined method `to_hash' for #<#<Class:0x007f984ddef6d8>:0x007f984a65a4>

我想知道我是否使用嵌套模型正确配置了合成。

【问题讨论】:

    标签: ruby-on-rails forms hash gem reform


    【解决方案1】:

    我刚刚遇到了同样的异常,它发生是因为我将一个常量 (ENV) 设置重新定义为 String。因为原来是全局常量类型Hash,所以我用的gem搞糊涂了。

    尝试看看你是否在其他地方替换了曾经是哈希值的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      相关资源
      最近更新 更多