我是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] =“邮件已成功发送。”
表格不再提交。
非常感谢任何建议。
由于
答案 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
});