Ruby on rails 3 显示来自模型的Flash消息的Rails

Ruby on rails 3 显示来自模型的Flash消息的Rails,ruby-on-rails-3,Ruby On Rails 3,我试图在Rails中显示我的模型中的一些错误消息。当前,当在mytest模型中捕获并引发异常时,将在my对象的errors范围内按预期返回消息。返回的消息如下所示: {:key1=>["Your key needs to be different."], :key2=>["Another exception"]} flash[:error] = @test.errors.messages render :new [:error, {:key1=>["Your k

我试图在Rails中显示我的模型中的一些错误消息。当前,当在my
test
模型中捕获并引发异常时,将在my对象的errors范围内按预期返回消息。返回的消息如下所示:

 {:key1=>["Your key needs to be different."], 
 :key2=>["Another exception"]}
 flash[:error] = @test.errors.messages
 render :new
 [:error, {:key1=>["Your key needs to be different."], :key2=>["Another exception"]}]
这是完美的,因为正确的错误会引发正确的异常。我现在要做的是将这些消息绑定到flash范围,以便在视图中显示它们。在我的控制器中,当我有异常时,我将其绑定到
flash[:error]
范围,如下所示:

 {:key1=>["Your key needs to be different."], 
 :key2=>["Another exception"]}
 flash[:error] = @test.errors.messages
 render :new
 [:error, {:key1=>["Your key needs to be different."], :key2=>["Another exception"]}]
执行此操作时,我的错误将绑定到闪存示波器,但当我在视图上输出它们时,它们将显示如下:

 {:key1=>["Your key needs to be different."], 
 :key2=>["Another exception"]}
 flash[:error] = @test.errors.messages
 render :new
 [:error, {:key1=>["Your key needs to be different."], :key2=>["Another exception"]}]
我只想显示这些消息中的每一条,使它们看起来像:

 Your key needs to be different.
 Another exception.
请注意,在上面的示例中,将呈现的只是消息文本

你能给我指出一个正确的方向吗?我需要在我的控制器中或在我的观点中改变什么,以实现上述所需的输出


提前谢谢。

我注意到,当我在以下构造中循环使用
@test.errors.messages
时,我得到了一个二维数组:

[:key1, ["Your key needs to be different."]] 
[:key2, ["Another exception"]]
由于这是一个多维数组,因此我可以简单地在我的erb中的数组上循环,并按照问题中的要求获得要显示的值:

<% for i in flash[:error] %>
    <%= i[1].first %><br />
<% end %>


在屏幕上返回:

您的密钥需要不同。
另一个例外


我总是乐于接受建议,所以如果有更好的方法来处理这个问题,请给出建议!否则,这对我来说确实有效。

我立即看到的一个需要改进的地方是您正在传递的哈希

如果没有特定原因将字符串包装到数组中,则可以消除该数组:

{ 
  :key1 => "Somebody poisoned the watering hole!",   
  :key2 => "There's a snake in my boot."
}
这将简化您的代码并消除您似乎不打算创建的二维数组

如果有理由将字符串包装到数组中(每个键有多条消息?),则需要重新访问迭代器;按照现在编写的方式,它只会显示任何给定键的
第一个
字符串