提交联系表单消息后,如何停止重定向到root_path?

时间:2013-08-14 22:14:31

标签: ruby-on-rails ruby contact-form

我是rails的新手,我正在使用这个出色的指南在新应用中创建一个简单的联系表单:contact-form-in-rails-3

一切正常但我正在构建的应用程序将有一个带有联系表单的实时流,供人们在观看时提交问题。问题是,当我发送消息时,我被重定向到root_path。应用程序必须不重定向或重新加载页面,并且闪存的显示方式与验证闪存类似。我理解为什么会发生这种情况,来自下面的控制器:

Class ContactController < ApplicationController

  def new
    @message = Message.new
  end

  def create
    @message = Message.new(params[:message])

    if @message.valid?
      NotificationsMailer.new_message(@message).deliver
      redirect_to(root_path, :notice => "Message was successfully sent.")
    else
      flash.now.alert = "Please fill all fields."
      render :new
    end
  end

end

但是,当我尝试将重定向行更改为以下内容时:

  

flash [:notice] =“邮件已成功发送。”

表格不再提交。

非常感谢任何建议。

由于

2 个答案:

答案 0 :(得分:0)

您需要向您表单添加ajax,以下是如何添加此功能的示例:

http://stjhimy.com/posts/07-creating-a-100-ajax-crud-using-rails-3-and-unobtrusive-javascript

答案 1 :(得分:0)

或者只使用给定的信息和通知消息呈现相同的页面。

发送ajax时重定向发生时可以执行的操作是:

在您的控制器中:

respond_to do |format|
    format.js { head :no_content }
    format.html { head :no_content}
end

在你的ajax中:

所以基本上,event.preventDefault()会禁止按钮正常操作,不应重新加载页面。

$('#selector').click(function(event){
        event.preventDefault();
//Do whatever you want
    });