2013-03-04 30 views
5

我的Flash消息出現兩次,我的網絡研究告訴我這是由於呈現和重定向顯示消息。我想我需要使用flash.now []或閃光[]某處進行排序這一點,但它需要去出現在導軌上兩次的Flash消息

guidelines_controller.rb

def update 
    @guideline = Guideline.find(params[:id]) 

    respond_to do |format| 
    if @guideline.update_attributes(params[:guideline]) 
     @guideline.update_attribute(:updated_by, current_user.id) 
     format.html { redirect_to @guideline, notice: 'Guideline was successfully updated.' } 
     format.json { head :no_content } 
    else 
     format.html { render action: "show" } 
     format.json { render json: @guideline.errors, status: :unprocessable_entity } 
    end 
    end 
end 

佈局/ application.html我不能工作了.erb

<div class="container"> 

    <% flash.each do |type, message| %> 

     <div class="alert <%= flash_class type %>"> 
      <button class="close" data-dismiss="alert">x</button> 
      <%= message %> 
     </div> 
    <% end %> 
</div> 

application_helper.rb 

def flash_class(type) 
    case type 
    when :alert 
    "alert-error" 
    when :notice 
    "alert-success" 
    else 
    "" 
    end 
end 

guideline_controller.rb

def show 
    @guideline = Guideline.find(params[:id]) 
    if @guideline.updated_by 
    @updated = User.find(@guideline.updated_by).profile_name 
    end 

     if User.find(@guideline.user_id) 
    @created = User.find(@guideline.user_id).profile_name 
     end 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @guideline } 

    end 
    end 
+0

嘗試修復那些''<% end %>電話那裏'DIV前'。我沒有看到你的控制器代碼有任何問題。我也不認爲你需要使用'flash.discard' – jvnill 2013-03-04 01:36:34

+0

已經編輯如上(這是你的意思?),但同樣的問題正在發生。 – tessad 2013-03-04 01:40:41

+0

不。你需要在循環之前先關閉div。嘗試縮進您的代碼,以便它匹配打開和關閉標籤/代碼 – jvnill 2013-03-04 01:45:17

回答

1

你可以做這樣的事情,以節省一些代碼行,只是一次顯示消息:

<%- if flash.any? %> 
    <%- flash.keys.each do |flash_key| %> 
    <%- next if flash_key.to_s == 'timedout' %> 
    <div class="alert-message <%= flash_key %>"> 
     <a class="close" data-dismiss="alert" href="#"> x</a> 
     <%= flash.discard(flash_key) %> 
    </div> 
    <%- end %> 
<%- end %> 

使用flash.discard,就展現出了閃光燈消息避讓渲染兩次

+0

謝謝 - 我已經添加到我的應用程序佈局(而不是以上內容)。現在它仍然顯示兩次,但沒有自舉styline(僅在其中一個)...任何想法,爲什麼會發生這種情況? – tessad 2013-03-04 01:35:22

+0

令人討厭的是,即使丟棄了Flash消息,您也會顯示兩次閃光燈。如果在顯示閃光燈之前放置<%= debug flash%>,看看是否有重複的閃光燈信息?這可能是問題。 – rorra 2013-03-04 01:47:12

+0

哪裏去? – tessad 2013-03-04 08:06:20