循环访问flash并获取活动模型对象

时间:2014-02-27 18:47:16

标签: ruby-on-rails

我正在尝试遍历我的flash消息,但我得到一个活动的模型对象作为消息。

<% flash.each do |key, msg| %>
  <%= msg %>
<% end %>

#<ActiveModel::Errors:0x007f84c4cdb108 @base=#<User id: nil, email: "cd", created_at: nil, updated_at: nil, password_digest: "$2a$10$lmh2.rb9bAmsQ3lo6SEYqu1f2L1JOVrD8VxmPXJ5Jobx...", remember_token: nil, admin: false, username: nil, password_reset_token: nil, password_reset_sent_at: nil, provider: nil, uid: nil>, @messages={:email=>["is invalid"], :password=>["is too short (minimum is 6 characters)"]}> 

如果然后循环通过对象我可以到达消息

<% flash.each do |key, msg| %>
    <% msg.each do |k,m| %>
        <%= m %>
    <% end %>
<% end %>

is invalid 
is too short (minimum is 6 characters)

我做错了什么?或者我必须这样做吗?

1 个答案:

答案 0 :(得分:0)

看起来您正在使用错误对象而不是消息填充flash。您可以在视图中执行此操作以显示所有错误消息

<%= flash[:error].full_messages.join("\n")%>

我建议你只需在控制器中执行此操作,就可以在flash中填充错误消息

flash[:error] = @model.errors.full_messages

在你看来,你可以做到

<%= flash[:error] %>