2014-11-23 45 views
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>'); 

已经在这工作了几个小时。感谢任何帮助。谢谢。

回答

2

在你的create.js.erb文件中,你可以使用jquery来显示它。

$('#err_msg').html('<div class="alert alert-danger"><%= j @err_message %></div>'); 

如果要在对象保存重定向,做在你的控制器如下:

format.js { render js: 'window.location.href = "/your_desired_path";' } 

这些应该是够了!

+0

谢谢!错误消息完美显示。不过,我将format.js替换为您的代码: format.js {'window.location.href =“<%= home_url%>”;' } 但实际上我的弹出窗口显示在没有消息的窗体上(只是一个红色的div)。有任何想法吗? – AMoghrabi 2014-11-23 05:00:26

+0

它不重定向? – Rubyrider 2014-11-23 05:17:31

+0

不是。代码是否正确?我嵌入红宝石:format.js {'window.location.href =“<%= home_url%>”;' } 编辑:我也把这段代码放在'else'语句中。也没有重定向。 – AMoghrabi 2014-11-23 05:20:10