我的控制器中有以下代码片段
def create
@message = Message.new(params[:message])
@message.message = h(@message.message)
if @message.save
flash[:message] = "Message Sent. Thank You for Contacting Me"
else
flash[:message] = "OOps Something went wrong"
end
redirect_to :action => 'contact'
end当我尝试在联系人表单中显示flash消息时,它不显示。我寻找了可能的解决方案,但它们似乎不起作用。你知道哪里出问题了吗?
发布于 2009-11-23 02:21:23
您的控制器正在重定向到:action => 'contact‘。确保为该操作呈现的模板具有flash通知输出。
<%= flash[:message] %>此外,您可能希望使用render :Action...vs redirect_to :行动....给自己留一个请求。
发布于 2009-11-23 01:58:46
flash散列可以包含要保存到下一次呈现的任何消息集。脚手架通常使用flash:notice的内容作为通知消息。如果你没有使用脚手架来生成你的网页,你将不得不在你的视图中添加<%= flash[:notice]%>。
您正在控制器中设置flash:message。因此,它不会出现在视图中的任何位置,除非视图中的某处包含<%= flash[:message]%>。
您可能的解决方案是将控制器中所有出现的flash[:message]更改为flash[:notice],或者将<%= flash[:message]%>添加到此操作可以呈现的任何视图中。
发布于 2009-11-23 02:16:23
并不是说你不会尝试,但如果我是你,我会做一些事情,比如
<% if flash[:messsage].blank? %>
<h1> flash hash is blank </h1>
<% end %>如果你在你的浏览器中看到"flash哈希为空“,你就知道它是什么意思了。
编辑:-
文档中的一些内容“只需记住:它们在执行下一个操作时就会消失。”在你的控制器中试试这个
flash.keep(:message) #keep the flash entry available for the next actionhttps://stackoverflow.com/questions/1779405
复制相似问题