未定义的方法`email'为#<product:0xbc177fc> - Rails 3

时间:2015-08-24 21:50:04

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我正面临这个问题我坚持使用Rails 3.2和ruby 2.1

我正在使用Log.v("xxxx","event definition size: "+eventDefinition.size()); ActiveAdmin将模型添加到我的管理区域。

我添加了这样的产品型号:

Devise

它在我的管理区域中创建了新菜单,这是正常的。

但是当我尝试保存新产品时,它会抛出此错误:

rails g active_admin:resource Product

这是我的NoMethodError at /admin/products undefined method `email' for #<Product:0xbc177fc> 型号:

Product.rb

我评论了class Product < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable # Setup accessible (or protected) attributes for your model #attr_accessible :email, :password, :password_confirmation, :remember_me belongs_to :category has_many :line_items has_many :orders, through: :line_items validates_presence_of :category_id, :name, :price_cents #attr_accessible :avatar #has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "/images/:style/missing.png" #validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/ attr_accessor :price attr_accessible :category_id, :description, :image, :name, :price_cents, :upc_code, :price, :taxable def price price_cents/100.0 if price_cents end def price= price self.price_cents = (price.to_f*100).round end end 行,但我仍然收到此错误,有任何想法吗?

这是我的email

Gemfile

1 个答案:

答案 0 :(得分:1)

undefined method `email' for #<Product:0xbc177fc>

错误意味着,它在email对象上调用product方法但无法找到它。要使email方法适用于product对象,您必须在:email模型中添加attr_accessorProduct列表。

email添加到您的Product型号'attr_accessor列表中:

attr_accessor :price, :email

此外,如果您想要更新:email属性,那么您还需要将:email添加到attr_accessible列表中:

attr_accessible :category_id, :description, :image, :name, :price_cents, :upc_code, :price, :taxable, :email