我遇到了问题。我在我的Rails应用程序中使用了一些复杂的形式。不幸的是我在创建表单时卡住了。那是我的代码:
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>
我想知道我是否使用嵌套模型正确配置了Composition。
答案 0 :(得分:-1)
我遇到了同样的异常,之所以发生这种情况,是因为我将一个常量(ENV
)设置重新定义为String
。因为最初它是一个全局常量类型Hash
,我使用的宝石很困惑。
尝试查看是否在其他地方替换曾经是哈希的东西。