我的项目视图中有一个表单
我在做
redirect_to root_path(@locale), alert: @client.errors
并在我的视图中使用
进行迭代flash[:alert].full_messages.each
但是当有很多错误时,rails会启动错误
ActionDispatch::Cookies::CookieOverflow
在RoR中传递大量错误描述的正确方法是什么?
答案 0 :(得分:1)
通常情况下,警报是一个设定长度的字符串 - 而不是可以长得这么长的字符串。
render :new, alert: "There has been an error"
渲染时,您可以在实例对象中查找错误 - 在本例中为@ client.errors。
轨道方式在视图中是这样的......
<% if @client.errors %>
<ul>
<% @client.errors.full_messages.each do |m| %>
<li><%= m %></li>
<% end %>
</ul>
<% end %>
原谅我的错误 - 我一直在写haml太久了。
要取消这一点的主要方法是渲染而不是重定向。通常,呈现的页面与具有该表单的页面相同。因此,在create方法中,您将在出错时呈现新内容。在update方法中,您呈现编辑。
答案 1 :(得分:0)
就个人而言,我认为传递错误的最正确方法是仅在通过验证时使用redirect_to
,如果不通过则使用render
(对值的简单测试) @object.update_attributes(hash)
)。
这样,您可以直接从视图中访问对象错误(通过@object.errors
),而无需在用户Cookie中加载任何内容。