Comment puis-je déclarer une variable globale dans Ruby on Rails?
Mon exemple de code:
dans mon controller#application.rb
:
def user_clicked()
@current_userid = params[:user_id]
end
dans mon layout#application.html.haml
J'ai une barre latérale avec ce lien:
= 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
dans mon views#view_user.html.haml
:
%h2 @current_userid
Je veux déclarer une variable globale qui peut modifier mon contrôleur et l'utiliser n'importe où, comme contrôleur, vues, etc. Ce qui précède n'est qu'un exemple de scénario. Si je clique sur le lien John ou Doe, il enverra un user_id
au contrôleur et lorsque je clique sur le lien "Afficher l'utilisateur cliqué", il affichera le dernier lien cliqué. C'est soit John=1
ou Doe=2
.
Bien sûr, si je clique d'abord sur le lien "Afficher l'utilisateur cliqué", il affichera nil
.
Dans Ruby les variables globales sont déclarées en préfixant l'identifiant avec $
$foo = 'bar'
Ce que vous voyez rarement utilisé pour n certain nombre de raisons . Et ce n'est pas vraiment ce que vous recherchez.
Dans Ruby sont déclarées avec @
:
class DemoController
def index
@some_variable = "dlroW olleH"
@some_variable = backwards
end
private
def backwards
@some_variable.reverse
end
end
Rails transmet automatiquement les variables d'instance du contrôleur au contexte de la vue.
# /app/views/demos/index.html.haml
%h1= @some_variable
Devinez ce qu'il produit et je vous donnerai un cookie.
Dans votre exemple @global_variable
est nul depuis controller#sample_1
n'est pas appelé - la demande passe par controller#sample_2
.
def sample_2
@global_variable = "Hello World"
end