Reputation: 297
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
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
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
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
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