#ruby-on-rails #forms #hash #gem #reform
#ruby-on-rails #формы #хэш #драгоценный камень #реформа
Вопрос:
У меня проблема. Я использую reform gem в своем приложении 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>
Интересно, правильно ли я настроил композицию с вложенными моделями.
Ответ №1:
У меня только что было такое же исключение, и это произошло потому, что я переопределял один параметр Constant ( ENV
) на значение a String
. Поскольку изначально это был глобальный постоянный тип Hash
, используемый мной gem запутался.
Попробуйте посмотреть, заменяете ли вы где-нибудь еще значение чего-то, что раньше было хэшем.