Javascript Rails表单提交而不刷新页面?

Javascript Rails表单提交而不刷新页面?,javascript,ruby-on-rails,forms,Javascript,Ruby On Rails,Forms,使用Play框架,我可以创建一个用户可以填写和提交的表单,弹出一个javascript确认弹出窗口,在一秒钟后消失,并且不会刷新页面。如本视频所示: 然而,我似乎无法在Rails中复制这一点。我试过使用 <%= form_tag "/", :autocomplete => :off, :name => 'sentMessage', :remote => 'true', :id => 'contactForm', :authenticity_token => t

使用Play框架,我可以创建一个用户可以填写和提交的表单,弹出一个javascript确认弹出窗口,在一秒钟后消失,并且不会刷新页面。如本视频所示:

然而,我似乎无法在Rails中复制这一点。我试过使用

<%= form_tag "/", :autocomplete => :off, :name => 'sentMessage', :remote => 'true', :id => 'contactForm', :authenticity_token => true, :method => 'post' do %>
最后,在home_controller.rb中

def submit_contact
    redirect_to '#contact'
end

它会弹出javascript确认弹出窗口,但也会刷新页面,这不是我想要的!有没有办法复制Rails中视频中显示的内容?

由于表单是远程表单,您的操作也应该使用js/json响应进行响应,而不是重定向到新操作

您可以在控制器操作中添加这些行,并定义相应的js模板(submit_contact.js.erb文件)


在这个js模板中,您可以编写JavaScript代码

您可以阻止默认操作并发出异步请求


如果您可以使用jQuery,那么应该可以使用类似的方法。否则,为纯js调整它应该不会太难。

javascript代码位于form.js中。如果我使用:
def submit\u contact respond\u to do | form | form.js{render:js=>“processForm(contactForm);”}end
,它会给出错误“ActionController::UnknownFormat”
def submit_contact
    redirect_to '#contact'
end
respond_to do |format|
  format.js
end