2012-08-26 65 views
0

我不確定爲什麼會發生這種情況,但是當我在Rails應用程序中成功提交表單時,它將錯誤的div類添加到我成功的Flash消息中。我用我的提示信息驗證碼:使用引導程序和簡單表單時,Flash消息命名不正確

<% flash.each do |name, msg| %> 
    <div class="alert alert-<%= name == :notice ? "success" : "error" %>"> 
     <a class="close" data-dismiss="alert">&#215;</a> 
     <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %> 
    </div> 
<% end %> 

這正是瑞恩·貝茨建議在此做導軌投:

http://railscasts.com/episodes/329-more-on-twitter-bootstrap?view=asciicast

什麼是錯的代碼?

<% flash.each do |name, msg| %> 
    <div class="alert alert-<%= name %>"> 
    <a class="close" data-dismiss="alert">&#215;</a> 
    <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %> 
    </div> 
<% end %> 

但是,這似乎並沒有被這樣做的正確方法:如果我只是做它工作正常。我不明白爲什麼railscast中的代碼不起作用。

回答

0

當您在控制器中創建了Flash消息時,您可以輸入字符串'notice'而不是符號:notice。嘗試在application.html.haml加上幾行就看你從你的提示信息

- if Rails.env.development? 
    = debug(params) 
    = debug(flash) unless flash.empty? 
+0

我添加了調試信息,它顯示了這個:https://skitch.com/leemcalilly/eu4dn/the-fuzz-cloud –

+1

你的'flash'包含':success'而不是':notice' ,所以把你的代碼改成':success? 「成功」:「錯誤」' – user673207

+0

我認爲這是問題所在。 –

0

據我記得,flash有時包含空的元素。在迭代之前檢查您是否在flash中有某些東西。

+0

檢查,看看是否閃光是空的第一個沒有幫助,因爲閃光燈是不是空的,它只是將發送警報得到了什麼-error class to the div –