未定义的方法`flash'for#

时间:2012-01-13 17:59:06

标签: ruby-on-rails ruby-on-rails-3 flash-message

我有Ruby on Rails 3的东西

我尝试这个简单的代码

  def index
    flash[:notice] = "ok"
    respond_to do |format|
      format.html # index.html.erb
    end
  end

它不起作用

NoMethodError in DashboardsController#index
undefined method `flash' for #<ActionDispatch::Request:0x7fee9329a9d0>

当我尝试

redirect_to :some_in, :notice => "ok"

在其他地方(在some_controller.rb中)然后打印:在.erb中注意 我有同样的错误,未定义的方法`flash'

我坚持这个。我使用谷歌搜索它,但它没有帮助。

3 个答案:

答案 0 :(得分:2)

在您的应用的config/applications.rb中添加此

config.api_only = false

答案 1 :(得分:1)

请在您的config / application.rb文件中加入ActionDispatch::Flash中间件。

config.middleware.use ActionDispatch::Flash

这可能会对你有帮助。

答案 2 :(得分:-1)

flash[:notice]只会在redirect_torender之后显示(尽管您需要flash.now[:notice])。

闪存用于向用户提供有关用户采取的操作状态的反馈。仅渲染索引通常不会属于此类别,因为它只显示数据,而不显示用户采取操作的结果。

举个例子:

def create
  @post = Post.new(params[:post])

  respond_to do |format|
    if @post.save
      format.html  { redirect_to(@post,
                    :notice => 'Post was successfully created.') }
    else
      format.html  { render :action => "new" }
    end
  end
end

在这种情况下,只有在直接保存帖子后,Flash才会出现在Post Post视图中。