ruby-on-rails - 在 Rails 中出现两次 Flash 消息

标签 ruby-on-rails ruby-on-rails-3 flash twitter-bootstrap

我的 flash 消息出现了两次,我的网络研究告诉我这是由于渲染和重定向显示消息。我想我需要在某处使用 flash.now[] 或 flash[] 对其进行排序,但我无法确定它需要去哪里

指南 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

最佳答案

您可以这样做以节省一些代码行,并只显示一次消息:

<%- 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,您可以显示 flash 消息并避免渲染两次

关于ruby-on-rails - 在 Rails 中出现两次 Flash 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193138/

相关文章:

ruby-on-rails - 如何使用回形针检查一个文件是否等于目录中的另一个文件

javascript - 在 Node.js 应用程序和 Rails 应用程序之间共享 session

ruby-on-rails - 多部分表单在 Rails 中不起作用

ruby-on-rails - rails - 使用 AJAX 处理布局 content_for

flash - 对QSPI FLASH的XIP(eXecute In Place)功能的困惑

flash - iTextSharp 将 MP4 嵌入到 PDF 中,但是它无法从 Acrobat Reader 播放

mysql - Ruby on Rails 根据另一个表值更新特定列

ruby-on-rails - 抽象类未在 Rails 中正确加载

string - 在 AS3 中分隔字符串

ruby - 带有 sinatra 的 Heroku 没有 RAILS_ROOT 或 Rail.root