所以,我正在制作一个订阅表格。
jQuery
$("<div id='dialog' title='Subscribe!'> <form id='subscribe_form' method='POST' action='/user/subscribe'>" +
"<input type='text' name='subscribe_email' id='email' placeholder='Email Address'> <br/>" +
"<button id='submit_subscribe_form'>Submit</button></p><p id='ruby_bool'></p></form>" +
"</div>").appendTo($("#subscribe"));
提交此表单时,它会向 Ruby Sinatra 侦听器发送一个 ajax 调用(抱歉,如果我没有使用正确的术语,还没有真正学习过 Sinatra,只是展示了如何使用它)
$('form').submit(function(){
$.ajax({
type: "POST",
url: "/user/subscribe",
data: $('form').serialize(),
success: function()
{
红宝石代码
post "/user/subscribe" do
user_Information = EmailList.new
if params[:subscribe_email] =~ /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/
user_Information.email = params[:subscribe_email]
puts user_Information.save
@email_validation_result = "True"
else
@email_validation_result = "False"
end
puts @email_validation_result
(是的,我知道我不应该使用正则表达式,但我能找到的引擎是用于 PHP 的)我想使用@email 验证结果,这样我就可以知道我的成功需要什么:调用我的 ajax。问题是,JavaScript 不允许 Ruby 注入(根据我的天知道研究了多少小时),我无法更新包含该变量异步的网页上的 div。我想全部异步执行此操作,因此不会刷新整个页面。(如果不可能,否则我会承认,但我非常怀疑)。我试图将 div 放在另一个页面上并使用 JQuery .load() 函数,但 .erb 文件无法识别。没有想法,几乎没有理智。谢谢!