Rails表单提交没有刷新页面?

时间:2015-07-09 18:29:50

标签: javascript ruby-on-rails forms

使用Play框架我可以创建一个用户可以填写并提交的表单,打开一个javascript确认弹出窗口,在一秒钟后消失,并且不刷新页面。该视频显示了这一点:https://www.youtube.com/watch?v=sErFQiifHKI

但是,我似乎无法在Rails中复制它。我尝试过使用

<%= form_tag "/", :autocomplete => :off, :name => 'sentMessage', :remote => 'true', :id => 'contactForm', :authenticity_token => true, :method => 'post' do %>

和routes.rb

post '/' => 'home#submit_contact'

最后,在home_controller.rb

def submit_contact
    redirect_to '#contact'
end

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

2 个答案:

答案 0 :(得分:0)

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

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

respond_to do |format|
  format.js
end

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

答案 1 :(得分:0)

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

如果你可以使用jQuery,那么this answer的内容应该可行。否则,对于纯粹的js来说,调整它不应该太难。