如何在单击rails中的提交按钮时在下一页上重定向之前显示模态?

时间:2015-12-22 07:33:09

标签: javascript jquery ruby-on-rails ruby ruby-on-rails-3

考虑我有两个模型:EmployerJobs

雇主已经创建了一个帐户来发布工作并填写了他的电话号码。当他填写新工作并点击发布职位按钮(提交按钮)时。我想检查他输入的手机号码是否已经过验证,如果我不想弹出模态或灯箱,我会要求他拨打某个号码的未接来电,并且一旦他确实该页面被重定向到作业索引页面。如果他想取消验证,他可以这样做,但页面将被重定向到任何地方,它仍然会在表单页面上。

但我不知道该怎么做。请帮助!

2 个答案:

答案 0 :(得分:0)

您可以在表单标记上触发onsubmit事件。

调用表单的onsubmit方法并从方法中激活ajax。检查控制器是否验证了手机号码,然后返回truefalse。然后从Ajax成功函数检查值(true / false),如果值为false,则显示模态并返回false,否则返回true。

答案 1 :(得分:0)

  

我想检查他输入的手机号码是否已经过验证

我建议在模型级别实现此功能,然后您可以通过ajax调用进行初始化:

#app/models/employer.rb
class Employer < ActiveRecord::Base
   has_many  :jobs
   validates :phone_number, numericality: { only_integer: true }
end

#app/models/job.rb
class Job < ActiveRecord::Base
   belongs_to :employer
end

我不知道你的后端...而且你似乎也在使用Rails 3.你肯定需要考虑更新它(考虑Rails 5 is almost out)。

这将为您提供应用程序级别的验证,这将允许您向控制器发送请求。得到Rails直接提供的回复:

#app/views/jobs/new.html.erb
<%= form_for @job, remote: true do |f| %>
   <%= f.submit %>
<% end %>

#app/controllers/jobs_controller.rb
class JobsController < ApplicationController
   respond_to :js, :json, :html
   def new
      @job = Job.new
      @job.save
   end
end

#app/assets/javascripts/application.js
$(document).on("ajax:error", "form#new_job", function(xhr, status, error) {
   alert(xhr.responseText);
});