2015-05-19 29 views
11

Come posso dichiarare una variabile globale in Ruby on Rails?Come posso dichiarare una variabile globale in Ruby on Rails?

mio codice di esempio:

nel mio controller#application.rb:

def user_clicked() 
    @current_userid = params[:user_id] 
end 

nel mio layout#application.html.haml ho barra laterale con questo link:

= link_to "John", user_clicked_path(:user_id => 1) 
= link_to "Doe", user_clicked_path(:user_id => 2) 
= link_to "View clicked user", view_user_path 

nel mio views#view_user.html.haml:

%h2 @current_userid 

Desidero dichiarare una variabile globale che può modificare il mio controller e utilizzarlo ovunque, come controller, viste e così via. Quanto sopra è solo uno scenario esemplificativo. Se faccio clic sul collegamento John o Doe, invierà un user_id al controller e quando faccio clic sul link "Visualizza utente cliccato", verrà visualizzato l'ultimo link cliccato. È John=1 o Doe=2.

Ovviamente se faccio clic sul collegamento "Visualizza utente cliccato" per primo, verrà visualizzato nil.

+1

Siamo spiacenti, non ho capito la tua domanda. – Surya

+0

Controlla [This] (http://stackoverflow.com/questions/12112765/how-to-reference-global-variables-and-class-variables) – Abhi

+0

Ciao ... Mi dispiace per la mia grammatica sbagliata^_^Ho modificato il mio domanda^_^e scenario di esempio. Quello che sto cercando di dire è che voglio una variabile globale a cui posso accedere ovunque. come nell'esempio precedente, se ho fatto clic su John o Doe link, invierà un user_id al controller e quando faccio clic sul link "Visualizza utente cliccato", verrà visualizzato l'ultimo link cliccato, ovvero John = 1 o Doe = 2. Ovviamente se ho cliccato prima su "Visualizza utente cliccato", verrà visualizzato nil.^_^Per favore help^_^ –

risposta

19

In variabili globali di Ruby sono dichiarati anteponendo l'identificatore con $

$foo = 'bar' 

Che si vede raramente utilizzata per a number of reasons. E non è proprio quello che stai cercando.

In rubino variabili istanza sono dichiarate con @:

class DemoController 
    def index 
    @some_variable = "dlroW olleH" 
    @some_variable = backwards 
    end 
    private 
    def backwards 
    @some_variable.reverse 
    end 
end 

Rotaie passa automaticamente variabili istanza del controller al contesto visualizzazione.

# /app/views/demos/index.html.haml 
%h1= @some_variable 

Indovina cosa emette e ti darò un cookie.

Nell'esempio @global_variable è nil poiché non viene chiamato - la richiesta passerebbe attraverso controller#sample_2.

def sample_2 
    @global_variable = "Helloword" 
end 
+0

Ciao ... Grazie per la risposta^_^Ho modificato la mia domanda sopra^_^e cambio lo scenario di esempio. Quello che sto cercando di dire è che voglio una variabile globale a cui posso accedere ovunque. Se ho fatto clic sul collegamento John o Doe, invierà un user_id al controller e quando faccio clic sul link "Visualizza utente cliccato", verrà visualizzato l'ultimo link cliccato, ovvero John = 1 o Doe = 2. Ovviamente se ho cliccato prima su "Visualizza utente cliccato", verrà visualizzato nil. Scusa per la mia cattiva grammatica^_^ –

+0

Penso che quello che stai cercando potrebbe essere sessioni http://guides.rubyonrails.org/action_controller_overview.html # session – max

+0

Grazie per queste sessioni^_^... Ho provato e lo sto usando ora ovunque ... session [: global_variable] –

Problemi correlati