Alexander Savin
Alexander Savin

Reputation: 297

Global variable in Rails

I have a feedback form in my Rails application. The feedback form requires initializing of the @support variable, and it should be visible on every page. The initialization is very short:

@support = Support.new(:id => 1)

However it would be nice to have this variable initialized once and access it from everywhere. How is that possible to do?

Upvotes: 10

Views: 11059

Answers (4)

Iain
Iain

Reputation: 4203

Rather than a global variable, you probably want to put something in the ApplicationController.

Either:

before_filter initialize_support

def initialize_support
      @support = Support.new(:id => 1)
end

Or:

helper_method support_form

def support_form
      @support_form ||= Support.new(:id => 1)
end

Upvotes: 5

hkairi
hkairi

Reputation: 385

you can use a helper method (in the application controller) to initialize the support variable . Something like this :

class ApplicationController < ..
   ...
   helper_method :my_var

   def my_var
      @support = Support.new(:id => 1)
   end
   ...

 end

Upvotes: 13

Steve Jorgensen
Steve Jorgensen

Reputation: 12401

It sounds like what you really want is to store the data in the user's session, right? For more details, see http://www.ozmox.com/2009/10/13/rails-sessions/.

Upvotes: 2

Sandro Munda
Sandro Munda

Reputation: 41078

A global variable starts with the dollard sign '$' like :

$support = Support.new(:id => 1)

However, global variables is bad :-) You should read this post by "Simone Carletti".

Upvotes: 5

Related Questions