2012-01-13 100 views
2

我有红宝石的东西on Rails的3未定义的方法`闪光”为#<ActionDispatch ::请求

我试试这个简单的代码

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 我有同样的错误,未定义的方法`闪存'

我被困在此。我用谷歌搜索它,但它没有帮助。

+0

你是继承自'ActionController :: Base'继承的'ApplicationController'吗?例如,您的控制器是否如下所示:顶部的class DashboardsController iwasrobbed 2012-01-13 20:14:37

+3

你是否偶然使用'rails-api'宝石? – sethvargo 2012-08-31 16:29:49

+0

对于任何正在使用'rails-api'的人来说,请参阅[这里](http://stackoverflow.com/a/21149689/21115) – dukedave 2015-02-02 17:39:37

回答

-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 

在这种情况下,闪光灯将出现在只有当这一职位已直接保存在展后视图。

+0

我尝试了所有在google中找到的东西,但仍然在DashboardsController中有NoMethodError#index undefined method'flash'for#' – user1148210 2012-05-16 16:40:57

+0

该问题询问'flash'方法未定义,而不是它是否出现。即使没有'flash [:notice]的输出,在正常情况下调用'flash'不应该导致NoMethodError。 – 2014-11-21 22:48:53

1

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

config.api_only = false 
1

请包括ActionDispatch::Flash中间件到你的config/application.rb中的文件。

config.middleware.use ActionDispatch::Flash 

这可能对你有帮助。

相关问题