Scope Confusion - Controller iVars in Modules

I’ve created a module to include in a Controller. Basically it works,
but I am expecting methods in the module to have access to instance
variables from the controller, and that appears to not be the case.
Yet, a simple Ruby example says it should be. I’m not sure what’s
different.

Simple Example:

module ShapeStuff
def set_type
@type = ‘circle’
end
end

class Shape
include ShapeStuff
attr_accessor :type
def initialize
@type = ‘square’
end
end

x = Shape.new
puts x.type # ‘square’

x.set_type
puts x.type # ‘circle’

My distilled Rails example would be something like this. I require
the file in application.rb.

module EventControls
def change_test_var
@test_var = ‘y’
end
end

class UsersAdminController < ApplicationController

 include        EventControls
 layout         '1col_admin'
 attr_accessor  :test_var

 def some_action
   @test_var = 'x'
   change_test_var
 end

end

Using debug(@test_var) the value doesn’t ever appear to change from ‘x’

Confused…

– gw

On May 17, 2008, at 4:41 PM, Greg W. wrote:

My distilled Rails example would be something like this. I require
the file in application.rb

oops, I meant environment.rb, of course

and… just to add more to this, I expected session to be available
to the module methods too, but it isn’t.

for now I’m passing ivars and session as params to module methods,
but I’d really like to get rid of that.

– gw

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs