如何正确地处理Ajax并处理Rails中的部分表单错误?
问题描述:
我有这样的侧边栏简报注册框:如何正确地处理Ajax并处理Rails中的部分表单错误?
--------------------------------
| | |
| | |
| |__________|
| |NEWSLETTER|
| | |
| | |
--------------------------------
我已经创建了以下行动newsletter_controller:
class SubscribersController < ApplicationController
def create
@subscriber = Subscriber.new(params[:subscriber])
end
end
我感到困惑中轨的几件事情:
1.如何用rails helpers编写表单,并将其作为AJAX请求发布到此表单中?
2.如果用户输入的内容不是有效的电子邮件地址或空白,我该如何在表单字段旁边的新闻快报侧栏中写出消息?
3.如果插入成功,我该如何用“您已注册”消息来替换表单。
我是新来的rails和jquery。
答
1)您需要阅读有关处理表单和执行ajax帖子的rails和jquery API。前者可以在这里找到:http://guides.rubyonrails.org/form_helpers.html 后者可以在这里找到:http://api.jquery.com/jQuery.post/。在这两个页面上都有很好的例子
2)您将希望通过javascript在输入上运行某种基本的正则表达式(以及当从rails发布数据时)以验证用户输入。这是另一个堆栈溢出帖子:jQuery Email Regex。这里是一个使用它的例子:
var fakeEmailAddress = "[email protected]";
var emailRegex = /^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,6}$/i;
var isAnEmailAddress = fakeEmailAddress.match(emailRegex);
if (!isAnEmailAddress) {
alert("Yo bro. What's up with that email addy? Try again");
}
3)在jquery ajax后,你可以设置“成功”功能来做到这一点。检查#1中的链接。您可能希望为表单提供一个ID属性,并用您从该帖子中检索到的html数据替换表单,如下面的计算器问题所示:why does this not work?? jquery ajax replace content in specific div