У меня есть форма Rails 3 (на самом деле, простая форма), которая имеет набор вложенных атрибутов:
<%= simple_form_for(@user, :url => the_path(@user)) do |f| %>
...
<%= f.simple_fields_for :credit_card do |c| %>
<%= c.input :number, :label => 'Credit card number' %>
...
<% end %>
...
<% end %>
Проблема в том, что атрибуты :credit_card принадлежат классу CreditCard, который не является моделью, поскольку я не храню данные кредитной карты в базе данных. У меня есть этот класс, определенный в /app/models/credit_card.rb следующим образом (согласно этот RailsCast):
class CreditCard
include ActiveModel::Validations
include ActiveModel::Conversion
include ActiveModel::Naming
attr_accessor :number, :expiration_month, :expiration_year, :cvv
validates_presence_of :number, :expiration_month, :expiration_year, :cvv
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
В user.rb у меня есть это:
has_one :credit_card
accepts_nested_attributes_for :credit_card
Когда я захожу на страницу, я получаю эту ошибку:
undefined method `quoted_table_name' for CreditCard:Class
Поиск в Google этой ошибки не дал никаких предложений. Я могу создавать объекты CreditCard из консоли Rails, но по какой-то причине генератор форм Rails не видит класс.
Я уже пытался заменить simple_form_for на form_for (и связанные с этим изменения), поэтому я не думаю, что это проблема simple_form.