2011-08-19 61 views
0

我有一個控制器。在控制器中我有兩種方法。我想要一個變量,它的值在方法1中設置,可以在方法2中訪問。我可以使用一個實例變量來實現嗎?實例變量用法

+0

我不明白爲什麼值應該重置,如果你正在做的是從第二種方法打印。 – DaMainBoss

+0

所以通常我不會有問題訪問在同一類的另一個方法中的一個方法中設置的實例變量? – Drew

+0

如果是這樣,應用程序控制器中是否會有一個設置可能導致我失去該值? – Drew

回答

3

是的,只要所有事情都發生在單個請求中,您就可以爲此使用實例變量。

因此,像這樣:

class PancakesController < ApplicationController 
    def where_is 
     @house = Pancake.find(params[:id]) 
     render :json => mangle, :status => :ok 
    end 

    protected 

    def mangle 
     @house 
    end 
end 

將正常工作。然而,這樣的事情:

class PancakesController < ApplicationController 
    def where_is 
     @house = Pancake.find(params[:id]) 
     #... 
    end 

    def mangle 
     if(@house) 
      #... 
     end 
     #... 
    end 
end 

不會,如果where_ismangle被稱爲差異請求工作。

請記住,控制器實例的生命週期是單個請求。

+0

重置。最後一行是必不可少的。我需要提醒一下。會話變量的生命週期是什麼? – Drew

+0

@Drew:會話值將持續到會話過期或人員註銷;您可以使用會話在控制器調用之間傳遞事件,但您通常不希望會話中的任何事情太大,並且您仍然必須做好準備以便消失(但對於短期目的應該沒問題)。 –

+0

很酷。謝謝!很有幫助!只需修復codezors! – Drew

0

是的,你可以使用一個實例變量來實現。