我有一个Rails 3形式(simple_form,真),其具有一组嵌套属性:导轨3的形状误差: “未定义的方法`quoted_table_name'”
<%= 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定义像这样的类(每this 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
使用谷歌搜索错误没有产生任何建议。我能够从Rails控制台创建CreditCard对象,但由于某些原因,Rails表单生成器没有看到该类。
我已经试着用form_for(和相关的改变)换掉了simple_form_for,所以我不认为这是一个simple_form问题。
你的控制器代码是什么样的?您将无法保存拥有信用卡的用户......这是发生故障的地方。 – 2011-04-20 23:41:53
我甚至没有保存。当您尝试加载表单时出现此错误。我想我只需要添加一些不嵌套的额外表单域。 – Devin 2011-04-21 14:23:06
我不认为你应该有一个用户。只需要一张信用卡的表格 – 2011-04-21 14:28:09