我正在尝试将应用程序迁移到rails 4和ruby2。
在我的模型中,我有这个:
attr_accessor :name, :age, :price
我换成了:
attr_reader :name, :age, :price
在我看来:
%td.small
= number_with_precision(@p.get_last_usd_price.to_f, precision: 2, delimiter: ",", strip_insignificant_zeros: true)
在Rails3.2和
Product
中,一切都很好但现在我有个问题: def get_last_usd_price
price = 0.0
puts "--------------------"
puts self.inspect #---> prints a #<product> with all the correct attributes
puts
puts self.name.inspect #---> prints nil
puts @name.inspect #---> prints nil
puts "--------------------"
# blah blah
end
基本上,当我试图访问它们时,所有的变量都是空的,但是它们被正确地保存到对象实例中。
我做错什么了我该怎么解决?
提前谢谢。
编辑:控制器
def detail_product
@p = Product.find(params[:product_id]) if params[:product_id].present?
if [email protected]? then
flash[:error] = 'No product id'
redirect_to :action => :products
end
end
最佳答案
如果属性attr_readers
、attr_accessors
和:name
保存在数据库中,则删除:age
/:price
,因为Rails已经定义了这些方法。
有关更多信息,请检查此答案:https://stackoverflow.com/a/14452353/1279707