Code sample:
class SomeController < ApplicationController
before_filter do |c|
add_crumb “Blah”, “/blah” #breadcrumbs plugin
redirect_to :controller => “foo”, :action => “bar” unless c.send
(:has_package?)
end
Rest of the controller…
private
def has_package?
A bunch of logic work to check to make sure
somebody’s session contains certain variables
returns ONLY true or false.
end
The problem I’m having is that I’m getting “undefined method” errors
for redirect_to. This confuses me since SomeController inherits from
ApplicationController which inherits from ActionController::Base. Any
idea what’s causing this problem? I’m thinking this is a scope issue
somehow, but I’m not sure why it’s failing like this.
Thanks.
One thing I forgot to mention. I’ve tweaked it so that I CAN get it
to work by calling the redirect_to method while inside has_package? -
so basically it looks like this:
def has_package?
if conditions
redirect_to :controller => “foo”, :action => “bar”
else
redirect_to :controller => “foo”, :action => “bar”
end
end
So before_filter is calling this method which CAN access redirect_to
as inherited from ActionController::Base. I’m just confused as to why
I have some obvious inheritance issues here.
On Apr 24, 2:50 am, Phoenix R. [email protected] wrote:
end
So before_filter is calling this method which CAN access redirect_to
as inherited from ActionController::Base. I’m just confused as to why
I have some obvious inheritance issues here.
with a before_filter using the block syntax self is the SomeController
class itself, but redirect_to is an instance method. Much as you have
to call your has_package method on the controller instance that is
yielded to the block you must also call redirect_to on that object.
Fred
So then would the syntax be:
c.redirect_to …
?
Thanks Fred - for the record, you’re the man
On Apr 24, 1:47 am, Frederick C. [email protected]
On Apr 24, 10:46 am, Phoenix R. [email protected] wrote:
So then would the syntax be:
c.redirect_to …
Yup (unless the method was protected/private in which case you could
use send, but i don;t think it is)
Fred