1

我正在编写代码以确保在有关联的子记录时不会删除父记录。

代码如下

class Customer < ActiveRecord::Base
  attr_accessible :name, :number
  has_many :customer_bills

  before_destroy :check_for_bills

  private

  def check_for_bills
    if customer_bills.count > 0
     errors.add :base, "cannot delete customer while Bills exist"
      return false
    end
  end
end

看法

<% if flash[:error] -%>
    <p class='error'><%=h flash[:error] %></p>
  <% end -%>

控制器

def destroy
..
flash[:error] = @customer.errors
..
end

但是尽管代码工作正常,但我没有收到错误消息?似乎是什么问题?任何指导都会有所帮助。

4

1 回答 1

0

我认为在 Rails 3.2 中我们必须使用notice而不是flash.

看法

<% if notice %>
<p id="notice"><%= notice %></p>
<% end %>

只需尝试上面的代码和适当的样式

CSS

#notice {
color: #000 !important;
border: 2px solid red;
padding: 1em;
margin-bottom: 2em;
background-color: #f0f0f0;
font: bold smaller sans-serif;
}

您可以像以前一样添加错误

添加错误

def ensure_not_referenced_by_any_line_item
  if line_items.empty?
    return true
  else
    errors.add(:base, 'Line Items present')
    return false
  end
end

我正在学习rails,不确定上面是否是完美的解决方案....

于 2012-10-17T05:50:35.873 回答