2015-05-19 6 views
11

Wie kann ich eine globale Variable in Ruby on Rails deklarieren?Wie kann ich eine globale Variable in Ruby on Rails deklarieren?

Mein Beispielcode:

in meinem controller#application.rb:

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

in meinem layout#application.html.haml Ich habe Sidebar mit diesem 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 

in meinem views#view_user.html.haml:

%h2 @current_userid 

Ich möchte eine globale Variable deklarieren, die meinen Controller ändern und überall verwenden kann, wie Controller, Ansichten usw. Das obige Beispiel ist nur ein Beispielszenario. Wenn ich auf den Link John oder Doe klicke, wird ein user_id an den Controller gesendet und wenn ich auf den Link "Angeklickten Benutzer anzeigen" klicke, wird der zuletzt angeklickte Link angezeigt. Es ist entweder John=1 oder Doe=2.

Natürlich, wenn ich zuerst auf den Link "Angeklickten Benutzer anzeigen" klicke, wird angezeigt.

+1

Entschuldigung, ich habe Ihre Frage nicht verstanden. – Surya

+0

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

+0

Hi ... Sorry für meine schlechte Grammatik^_^Ich habe meine bearbeitet Frage^_^und Beispielszenario. Was ich versuche zu sagen, ist, dass ich eine globale Variable möchte, auf die ich überall zugreifen kann. Wie im obigen Beispiel, wenn ich auf John oder Doe Link geklickt habe, wird eine user_id an den Controller gesendet und wenn ich auf den "View clicked user" Link klicke, wird der zuletzt angeklickte Link angezeigt, entweder John = 1 oder Doe = 2. Natürlich, wenn ich zuerst auf "View clicked user" geklickt habe, wird nil angezeigt.^_^Bitte helfe^_^ –

Antwort

19

In Ruby globalen Variablen werden durch das Vorsetzen der Kennung erklärt mit $

$foo = 'bar' 

Welche man selten für a number of reasons gebraucht. Und es ist nicht das, wonach Sie suchen.

In Ruby Instanzvariablen werden mit @ erklärt:

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

Rails automatisch übergibt die Instanzvariablen der Steuerung der Ansicht Kontext.

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

Ratet mal, was es gibt, und ich werde Sie ein Plätzchen geben.

In Ihrem Beispiel @global_variable ist Null seit controller#sample_1 wird nicht aufgerufen - die Anforderung würde controller#sample_2 gehen.

def sample_2 
    @global_variable = "Helloword" 
end 
+0

Hi ... Danke für die Antwort^_^Ich habe meine Frage oben^_^bearbeitet und das Beispielszenario geändert. Was ich versuche zu sagen, ist, dass ich eine globale Variable möchte, auf die ich überall zugreifen kann. Wenn ich auf den Link John oder Doe klicke, wird eine user_id an den Controller gesendet und wenn ich auf den Link "Angeklickten Benutzer anzeigen" klicke, wird der zuletzt angeklickte Link angezeigt, entweder John = 1 oder Doe = 2. Natürlich, wenn ich zuerst auf "View clicked user" geklickt habe, wird nil angezeigt. Sorry für meine schlechte Grammatik^_^ –

+0

Ich denke, was Sie suchen, können Sitzungen sein http://guides.rubyonrails.org/action_controller_overview.html # session – max

+0

Danke für diese Sitzungen^_^... Ich habe es versucht und ich verwende es jetzt überall ... session [: global_variable] –

Verwandte Themen