2010-06-07 17 views
1

我試圖阻止與另一個記錄有關係的記錄被刪除。我可以停止刪除,但不會發送我希望的閃光消息!無法從模型方法發送Flash消息

class Purchaseitem < ActiveRecord::Base 
    before_destroy :check_if_ingredient 

    ... 

    def check_if_ingredient 
    i = Ingredient.find(:all, :conditions => "purchaseitem_id = #{self.id}") 
     if i.length > 0 
     self.errors.add(:name) 
     flash.now[:notice] = 
     "#{self.name} is in use as an ingredient and cannot be deleted" 
     return false 
    end 
    end 

這將阻止該刪除wihthout閃光燈線,當我添加它,我得到:

未定義的局部變量或方法'閃光」爲#

任何幫助將不勝感激!

回答

4

操縱閃光燈屬於控制器。

你的模型應該從check_if_ingredient返回真/假和控制器應該呈現基於check_if_ingredient

-1

的返回值,你應該這樣做在你的控制器中的閃存消息。

# controller 
if @purchaseitem.destroy 
    flash.now[:notice] = 
     "#{@purchaseitem.name} was successfully deleted" 
else 
    flash.now[:notice] = 
     "#{@purchaseitem.name} is in use as an ingredient and cannot be deleted" 
end