У меня есть форма Rails 3 (на самом деле simple_form), которая имеет набор вложенных атрибутов:
<%= 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
Поиск этой ошибки не дал никаких предложений.Я могу создавать объекты CreditCard из Rails Console, но по какой-то причине генератор форм Rails не видит класс.
Я уже пытался заменить simple_form_for на form_for (и связанные с ним изменения), поэтому яне думайте, что это проблема simple_form.