gpt4 book ai didi

jquery - 一个很好的例子,rails respond_to 如何处理模型验证错误和 ajax 表单

转载 作者:行者123 更新时间:2023-12-01 00:24:30 24 4
gpt4 key购买 nike

我想要什么

我使用新的 Rails respond_to Controller Api 和 ajax 表单。如果对象未验证,rails 将返回 Json 错误对象并触发“ajax:error”事件。我想在相应的表单字段下/下显示每个错误(我们正在使用 formatastic)。

这是我的例子..

Controller :

class Admin::PrivateMessagesController < AdminController
respond_to :json

def create
private_message = PrivateMessage.new(params[:private_message])
private_message.save
respond_with private_message
end
end

查看

<%= form_for @private_message, :remote => true, :html => {"data-type" => "json"}  do |f|
f.input :body
...
end %>

js/coffeescript

我只是将所有错误添加到字符串中并显示它们..

$("#new_private_message").on 'ajax:error', (event, data, status) ->
error = "Errors: "
$.each $.parseJSON(data.responseText), (field, errorMessage) ->
error += "#{field}-#{errorMessage} "
$('#errors').html(error)

json 错误对象

{"body":["Please enter a message."],"subject":["Please enter a message."]}

我的问题!

  • 我必须自己解析 json 吗?
  • 如何将错误消息添加到该字段?
  • 它不应该是标准 jquery-ujs 的一部分吗?

最佳答案

我必须自己解析 json 吗?

是的,jQuery Ajax API 不会自动解析错误响应。您必须自己执行此操作。

如何将错误消息添加到该字段?

以下是如何处理错误的快速示例:http://jsfiddle.net/hpM6W/

尽管需要更详尽的解决方案。例如,在我提供的示例中,提交两次,看看会发生什么......

有许多工具包和库可用于丰富的客户端验证和错误消息的呈现。我强烈建议查看 jQuery Validation Plugin开始表单验证。你仍然应该always do server side validation并返回任何错误。

我过去所做的是一个混合模型,我会进行客户端验证以方便用户(更好的用户体验),并使用 jQuery 验证插件来呈现服务器端验证的结果通过showErrors方法。

这是一个简单的示例:http://jsfiddle.net/GNq84/关于如何使用 showErrors 显示服务器端验证产生的错误消息。请注意,在此示例中多次提交效果会更好。

但是,有一个警告,showErrors 预计会出现如下错误: { "element": "message"} 而不是您当前拥有的错误: { "element": [ "message1", "message2"] },但我会把这个问题留给你来解决:)

关于jquery - 一个很好的例子,rails respond_to 如何处理模型验证错误和 ajax 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9405151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com