Flash消息未显示在显示屏中

时间:2014-02-17 01:48:20

标签: ruby-on-rails

在SO中有一些这样的问题,但没有一个解决我的具体问题,所以我发布了它。

我正在尝试在我的rails项目中显示成功和错误的闪存通知,但它们没有显示,我不知道为什么。

class CheckinsController < ApplicationController
  def index
    @checkins = Checkin.all
    @checkin = Checkin.new

  end

  def create
      @checkin = Checkin.create(params[:checkin])
        if @checkin.errors.empty?
          render json: @checkin, status: 201,
          :notice => 'Thanks for posting your comments.'
        else
          flash[:notice] = "Please enter a name."
          redirect_to checkins_path
        end
  end
end

注意,是的,:noticeflash[:notice]存在不连续性,但这是控制器不会破坏它的唯一方法。

我的模型看起来像这样,正在做它应该做的事情,也就是说,如果表单中的名称字段是空的,则阻止保存:

class Location < ActiveRecord::Base
   attr_accessible :name, :description

    has_many :checkins  

    validates :name, presence: true
end

我在application.html.erb文件中有这个:

<div id="notice"><%= flash[:notice] %></div>

从技术上讲,这应该可行,它应该在发现错误时显示通知。有什么我想念的吗?

我也尝试过使用......

 <% flash.each do |name, msg| -%>
     <%= content_tag :div, msg, class: name %>
 <% end -%>

per RoR docs无济于事。

有一点需要注意的是,它也没有渲染CSS。似乎相关,但我无法弄清楚如何。

1 个答案:

答案 0 :(得分:1)

这已在此处回答:Rails Flash.now not working

基本上你需要在视图中以不同的方式调用方法。

flash.now[:notice]

将是正确的调用。