gpt4 book ai didi

jquery - 如何使用 JQuery/Ajax(和 Rails)执行复杂的服务器端表单验证?

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

我正在 Rails 上构建一个问答应用程序,其中包含许多复杂的验证(例如,用户不能对他/她自己的问题进行投票,或对同一问题进行两次投票等)。如果请求通过,我一直在使用 Ajax+JQuery 更新页面上的内容,但希望在出现问题时显示有用的错误消息。虽然我对客户端验证(例如检查字段是否为空)没有任何问题,但对于对自己的问题进行投票之类的事情,我能做的最好的事情就是防止在投票 Controller 中执行任何 JavaScript,以便计票不更新。像这样:

if @vote.save
respond_to do |format|
format.html {redirect_to :back}
format.js
end
else
respond_to do |format|
flash[:error] = "Sorry, there was an error."
format.html {redirect_to :back}
end

结束

如果我尝试对自己的问题进行投票,StackOverflow 会给我一条错误消息,所以我知道这是可以完成的!

谢谢

最佳答案

服务器端验证

在您的投票模型中:

validates_uniqueness_of :current_user

保持传统 Controller 的设置以进行编辑和保存。

然后使用 jquery 使用这个:

$(".vote_link").submit(function(){
$.ajax({type: "POST",
url: $(this).attr("action"),
data: $(this).serialize(),
dataType: "script",
error: function(){ $("#message").show().html("You can't vote on this!")},
success: function(){ $("#message").show().html("You voted!")};
});
return false;
});

还有你的 HTML/HAML:

= link_to 'Vote on This', new_vote_path(object)

关于jquery - 如何使用 JQuery/Ajax(和 Rails)执行复杂的服务器端表单验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549989/

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