2011-12-17 31 views
0

您好我有下面的代碼在我的模型:如何在Rails中顯示錯誤通知?

class Product < ActiveRecord::Base 
    before_destroy :check_tasks 
    has_many :tasks, :order => 'created_at DESC' 
    validates :name, :presence => true 
    belongs_to :sprint 
    validates :sprint_id, :presence => true 
    def check_tasks 
     if self.tasks.any? 
      errors.add_to_base "Product has tasks and cannot be destroyed." 
    return false 
end 
end 
end 

當我在上面列出了所有產品的產品的看法,我想顯示在視圖頂部的錯誤信息,每次有人嘗試刪除具有鏈接到它的任務的產品。我想要的消息:產品有任務,不能銷燬顯示。

我應該在下面的視圖中輸入什麼代碼?該視圖是產品視圖,位於views/products文件夾中。

謝謝!

<h1>Listing products</h1> 
<%= link_to 'New Product', new_product_path %> 
<table> 
    <tr> 

    <th>Name</th> 
    <th>Description</th> 
    <th>Sprint</th>  
    <th></th> 
    <th></th> 
    <th></th> 
    </tr> 
<% if not @messages_rendered -%> 
    <% if flash[:error] -%> 
    <p class='error'><%=h flash[:error] %></p> 
    <% end -%> 
    <% if flash[:notice] -%> 
    <p class='notice'><%=h flash[:notice] %></p> 
    <% end -%> 
<% end -%> 
<% @messages_rendered = true -%> 

<% @products.each do |product| %> 
    <tr> 
    <td><%= product.name %></td> 
    <td><%= product.description %></td> 
    <td><%= product.sprint.name %></td> 
    <td><%= link_to 'Show', product %></td> 
    <td><%= link_to 'Edit', edit_product_path(product) %></td> 
    <td><%= link_to 'Destroy', product, :confirm => 'Are you sure?', :method => :delete %></td> 
    </tr> 
<% end %> 
</table> 

<br /> 

回答

3

嘗試把這個在您的product_controller:

def destroy 
    ... 
    flash[:error] = @product.errors.full_messages.join(' ') 
    ... 
end 
+0

它的工作!謝謝!唯一的是我得到的baseProduct有任務,不能被刪除。你知道我如何刪除文本背後的「基礎」嗎? – Runy 2011-12-19 21:38:38

+0

@Runy我想,你使用紅寶石1.8,對吧?我已經更新了代碼,試試這個。 – 2011-12-20 07:01:26

+0

是的,我有紅寶石版本1.8.7和軌道3.0.5。我試過你更新的代碼,但沒有奏效。奇怪的是,「基地」不斷出現。我快到了。我知道。 – Runy 2011-12-21 18:01:29