我已经设置了一个小应用程序,它接收一个电子邮件地址并保存它,我已经在模型上设置了验证(唯一且有效的电子邮件),这些都有效。
我正在使用以下代码尝试保存电子邮件,如果它已经存在或者它不是有效格式,则需要停止并设置错误消息
def create
interest = KnownInterest.new( :email => params[:email] )
if(interest.valid? and interest.save)
flash[:notice] = "Thanks for showing interest, We'll be in touch with updates."
else
flash[:notice] = interest.errors.messages
end
redirect_to action: "index"
end
这吐出[“电子邮件无效”],我怎么把它变成一个字符串(不是我认为是一个数组,如果我错了就纠正我)
答案 0 :(得分:9)
如果您只想要第一条消息,请interest.errors.messages.first
。如果你想要它们,那么像interest.errors.full_messages.join(", ")
这样的东西会把所有的消息分成一个字符串。
但是,您可能希望了解ActiveRecord
验证和错误
这是一个很好的指南:
http://guides.rubyonrails.org/active_record_validations_callbacks.html
至少阅读:
答案 1 :(得分:4)
.messages
将返回所有错误的数组。即使它只是一个。
因此,要正确显示它们,请在您的视图中执行此操作:
- for error in flash[:notice] do
= error
或者如果您更喜欢html.erb
:
<%- for error in flash[:notice] do %>
<%= error %>
<%- end %>
答案 2 :(得分:0)
这个对我有用:
<html>
<body>
<%= render 'layouts/header' %>
<div class="container">
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
<%= yield %>
<%= render 'layouts/footer' %>
<%= debug(params) if Rails.env.development? %>
</div>
</body>
</html>
答案 3 :(得分:-1)
interest.errors.messages.join(<any concatenating character>)
将创建一个连接数组元素的字符串。
您可以使用字符串 - 例如“,”,“:”或几乎任何东西来连接。