2012-02-07 77 views
0

我无法在表单提交失败后显示Flash消息。在提交表单后使用“渲染”时未显示Flash消息

这里是形式:

<%= form_for @question do |q| %> 

    <p> 
    <b>Your question</b><br /> 
    <%= q.text_field :title, :size => 48 %> 
    </p> 
    <p> 
    <b>Add more details</b><br /> 
    <%= q.text_area :body, :size => "80x10" %> 
    </p> 
    <p> 
    <%= q.submit %> 
    </p> 
<% end %> 

这是控制器处理它的一部分:

def create 
    @question = current_user.questions.build(params[:question]) 
    if @question.save 
     redirect_to questions_path, :flash => { :success => "Your question was saved!" } 
    else 
     flash.now[:alert => "There was a problem when trying to save your question!"] 
     render 'new' 
    end 
    end 

new动作模板文件包含什么,但上面的表格。

我目前使用此代码段(在application.html.erb)显示的提示信息,并在成功运作的提示信息保存和重定向到index

<% flash.each do |k, v| %> 
     <div class="<%= k %>"><%= v %></div> 
    <% end %> 

我一直没能找到这是我自己解决这个问题的方法,所以我希望更有经验的一双眼睛能够省下我认为仅需几分钟的时间来启发我。

谢谢!

PS:我也尝试了常规flash[:key => "value"]以及render 'new', :flash => {:alert => "There was a problem when trying to save your question!"}

回答

5

我相信,通过这样的:

flash.now[:alert => "There was a problem when trying to save your question!"] 

您的意思是:

flash.now[:alert] = "There was a problem when trying to save your question!" 
+0

如果只有我会。 ..这是我没有尝试过的一个变体。问题解决了,谢谢! – 2012-02-07 07:49:39

+0

@codejak,如果它解决了你的问题,你应该将答案标记为Accepted ... – Lambart 2013-07-31 21:20:56

相关问题