Неопределенный метод `имя_модели` для объекта реформы
Я продолжаю получать:
Undefined method `model_name` for #<DonationForm:0x007ff62ca75470>
Я почти уверен, что что-то упустил. Я следовал инструкции по установке и все. Что может быть причиной?
Модель:
class Donation < ApplicationRecord
belongs_to :campaign
has_many :anotherthings
end
контроллер:
def new
@campaign = Campaign.new
@donation = DonationForm.new(Donation.new)
end
Посмотреть:
<%= simple_form_for [@campaign, @donation] do |f| %>
<% end %>
Форма объекта:
# app/forms/donation_form.rb
class DonationForm < Reform::Form
property :donation_amount
end
1 ответ
Ваш контракт должен знать, с какой моделью он связан.
- Технически это может быть что угодно - модель ActiveRecord, PORO, OpenStruct и т. Д. Но контракт реформирования должен знать, куда он должен "направлять" вывод, как только это будет сделано с валидациями, принуждением и т. Д.
- Если вы не укажете модель, Reform попытается угадать, что это за объект, переданный в форму.
- Чтобы магия ActiveRecord работала - вы должны указать модель в реформе. Я думаю, что это применимо только к ActiveRecord. Если я правильно помню, @apotonick упоминается в некоторых обсуждениях.
То, что вам не хватает, это всего лишь одна строка
# app/forms/donation_form.rb
class DonationForm < Reform::Form
model Donation # Try adding this line.
property :donation_amount
end
PS:
Это может быть что-то не связанное - так как вы используете Rails 5.1. Я еще не пробовал обновляться с 4.2.8
Кроме того, наш канал Gitter для проекта Trailblazer (включая реформу) является лучшим местом для получения помощи: https://gitter.im/trailblazer/chat