我正在使用Rails 3.2.5和rails3-jquery-autocomplete。 我的方法是:我有一个名为“supplier_name”的attr_accessor,当用户填写自动完成并选择propper供应商时,它会填充供应商ID为“suplier_id”的字段。 当我为表单创建自动填充字段时,我发现了一个问题,每次我编辑记录时,supplier_name attr_accessor都为空。检查代码,我可以看到隐藏字段“supplier_id”已正确填充。
所以,我用这种方式修复它,只是一个例子:
class Invoice < ActiveRecord::Base
belongs_to :supplier
...
attr_accessor :supplier_name
attr_accessible :some_stuff, :supplier_name, :supplier_id, :some_other_stuffs
validates :some_stuff, presence: true
def supplier_name
self.supplier_name.company_name unless self.new_record? rescue ""
end
太棒了!我解决了我的问题编辑但是...如果我正在创建一个新记录,提交,并忘记填写该字段:some_stuff,“supplier_name”将变为空,但“supplier_id”将正确填充。
那么,解决这个问题的最佳方法是什么?
感谢您的帮助。
答案 0 :(得分:0)
尝试抢救self
。
它应该有效,因为它应该返回你提交的同一个对象。
如果这不起作用,您可以尝试添加一个setter方法,如:
class Invoice < ActiveRecord::Base
belongs_to :supplier
...
attr_accessor :supplier_name
attr_accessible :some_stuff, :supplier_name, :supplier_id, :some_other_stuffs
validates :some_stuff, presence: true
def supplier_name
self.supplier_name.company_name unless self.new_record? rescue self
end
def supplier_name=(supplier_name)
supplier_name
end
end
希望它有所帮助!
答案 1 :(得分:0)
经过大量研究,问题已经解决,取代了方法:
def supplier_name
self.supplier_name.company_name unless self.new_record? rescue self
end
的
def supplier_name
self.supplier_name.try(:company_name)
end