Rails AJAX错误消息

时间:2010-11-02 03:57:13

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

我有一个通过jQuery AJAX提交的表单......

模型的字段有validates_presence_of,如果该字段为空,则会在XHR :role_idNot Defined.

上回吐

我学会了如何通过以下方式自定义:

 validates_presence_of(:role_id, :message=> "Select a role to continue.")

但是吐了回来:role_IDSelecta角色继续。所以我发现这可能有所帮助,IDK呢:

<% errors.each do |attribute, message| -%>
    <% if message.is_a?(String)%>
        <li><%= message %></li>
    <% end %>
<% end -%>

我的问题是如何在Rails 3中使用远程表单来回处理这种类型的来回?我想用AJAX提交并以某种方式用AJAX发回错误消息?

想法?插件?

再次感谢

1 个答案:

答案 0 :(得分:2)

嗯......不是Rails正在吐痰。这是你的控制器。因此,当您的模型未通过验证时,您可以吐出任何您喜欢的东西。您可能有一个创建和更新方法,每个方法都必须处理XHR。您自己决定如何与浏览器进行通信非常重要。

有人可能会争辩说,验证失败会产生错误(4xx)响应,但这确实是HTTP,而不是应用程序响应代码。在这种情况下,您的应用程序正确处理了请求,因此它需要返回200.因此,Ajax错误处理程序对您没有多大用处 - 那就是真正的页面未找到,服务器隐藏等错误。

相反,您的成功处理程序需要检查Flash哈希以发现是否存在错误,如果是,则将错误文本放在页面上某个相关位置供您的用户使用。

一个看起来很有前途的插件是Stickies(http://github.com/JokerCatz/stickies)。项目在一段时间内没有任何活动,但是如果它不能与你的Rails版本一起使用,那么将它分叉并将其提升到当前的Rails级别应该不会太难。