2012-01-13 99 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 

這可能對你有幫助。

相關問題