1
我是新来的铁轨,我想配置我的表单通过AJAX提交请求。我的页面使用具有表单的引导程序弹出。Ruby on Rails/AJAX:如何在成功提交或显示错误时刷新页面?
如果数据是有效的,那么我希望页面重定向到原始页面('新'行动)。如果存在重复的成员(模型在保存时返回false),那么我想要显示此错误消息:
“您已经存在于我们的系统中或者您的电子邮件地址是重复的,请登录,如果您有之前注册“。
这里是视图(只有部分):
<%= form_for(@person, url: {controller: "sign_ins"},html: {class: "form-signup",
id: "signupform"}, remote: true) do |f| %>
<p id="info_text" class="lead">Please enter the information below to register.</p>
<div id = "err_msg"></div>
<%= render("shared/companylist") %>
<%= f.text_field :first_name, class: "form-control fieldBottomMargin", placeholder: "First Name", required: true %>
<%= f.text_field :last_name, class: "form-control fieldBottomMargin", placeholder: "Last Name", required: true %>
<%= f.phone_field :phone, class: "form-control fieldBottomMargin",
placeholder: "Phone Number (No Dashes)", required: true, pattern: "([0-9]{10})" %>
<%= f.email_field :email, class: "form-control fieldBottomMargin", placeholder: "E-mail", required: true%>
<%= f.button "Register", class: "btn btn-lg btn-primary btn-block", id: "btnsubmit" %>
<% end %>
这是我的控制器创建行动,我不知道这是否是正确的:
def create
@person = Person.new(person_params) #Call 'strong paremeters' method.
respond_to do |format|
if @person.save
format.html {redirect_to home_url}
format.js {}
else
@err_msg = "You already exist in our system or your e-mail address is a duplicate.
Please sign in if you have registered before."
format.js {}
end
end
末
这里是我的(失败的)js文件,我无法找到如何配置。
$('#err_msg').html('<div class="alert alert-danger"><%= j @err_message %></div>');
已经在这工作了几个小时。感谢任何帮助。谢谢。
谢谢!错误消息完美显示。不过,我将format.js替换为您的代码: format.js {'window.location.href =“<%= home_url%>”;' } 但实际上我的弹出窗口显示在没有消息的窗体上(只是一个红色的div)。有任何想法吗? – AMoghrabi 2014-11-23 05:00:26
它不重定向? – Rubyrider 2014-11-23 05:17:31
不是。代码是否正确?我嵌入红宝石:format.js {'window.location.href =“<%= home_url%>”;' } 编辑:我也把这段代码放在'else'语句中。也没有重定向。 – AMoghrabi 2014-11-23 05:20:10