2012-02-07 72 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

相關問題