这是我的创作动作.它创建一个Message的新实例,并使用模型验证进行检查.
然后有一个简单的if else循环,如果模型验证已经完成则发送消息,如果他们想要发送另一个,则呈现"新"视图.如果未满足模型验证,则只需再次呈现"新"视图.
如果消息成功,则闪存哈希还会填充相关信息,成功消息和警报消息.
def create
@message = Message.new(message_params)
if @message.valid?
Contactform.contact(@message.name, @message.town, @message.email, @message.content).deliver
flash[:success] = "Sent message"
render 'new'
else
flash[:alert] = "Alert"
render 'new'
end
end
Run Code Online (Sandbox Code Playgroud)
但是,我不认为我做得对,因为消息留在闪光灯中.他们被查看一次后就不会被清除.
我应该如何确保闪存清除,应该是什么?
更新
这就是错误的产生方式.我成功发送了一条消息,然后我回到了"新"视图,我收到了一个'成功'的闪存.我尝试发送错误消息,然后我回到"新"视图,我收到了之前的'成功'闪光和'警报'闪光.对用户来说非常困惑!
第二个我浏览到另一个页面,两个闪烁消失,但这是我认为的问题.与返回同一页面有关,因此Rails不知道要清除闪存.我可以强制清除闪光灯吗?
小智 7
我想在rails doc中阅读关于flash.now的部分将有助于为您清除这一点:http://guides.rubyonrails.org/action_controller_overview.html#flash-now .
Flash会响应下一个请求.在这种情况下,您不是在创建操作后发出新请求 - 您只是重新渲染new
视图.我想flash.now就是你想要在这里使用的东西.
我还要说,在你的创建成功案例中,创建操作应该是重定向而不是仅仅重新渲染视图. redirect_to和render是否可以交换?解释了重定向和渲染之间的区别
归档时间: |
|
查看次数: |
2688 次 |
最近记录: |