在Flash警报Rails 3中显示错误消息

时间:2013-07-18 10:49:47

标签: ruby-on-rails ruby ruby-on-rails-3 validation

如果我在模型中设置验证消息

validates :name, :presence => {:message => 'The name cant be blank.'}

如何让这条消息显示在闪光警报中,这是我到目前为止所尝试的

def create
   @message = Message.new(params[:message])
   if @message.valid?
     ContactMailer.send_mail(@message).deliver
     redirect_to(root_path, :notice => "Thanks for your message, I will be in touch soon")
   else
     flash[:error] = @message.errors
     render :new
   end
end

但我得到的是页面顶部的黑色错误信息条,其中没有文字,在我的布局/应用程序中我有这个

<% flash.each do |name, msg| %>
<div class="alert alert-<%= name == :notice ? "success" : "error" %>">
  <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
</div>
  

赞赏任何指针

1 个答案:

答案 0 :(得分:9)

通过Flash消息显示验证错误并不是一个好主意,但如果您真的需要它:

flash.now[:error] = @message.errors[:name].first

如果您需要立即显示消息,请使用flash.now[:error]

http://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html#method-i-now http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-5B-5D