Render and/or redirect were called multiple times in this action


#1

I’m trying to add an application enabled/disabled flag in my
application… This is my code.

[code=] # application.rb

before_filter :check_enabled_flag

private

def check_enabled_flag
application_flag = ApplicationFlag.find(:first)

if application_flag.application_enabled
  redirect_to application_disabled_path and return
end

end[/code]
and for some reason i keep getting this error

Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".
the database is set up correctly and it works when the site is
enabled. when its disabled i get the error above. any suggestions as
to how to fix this?

thanks.


#2

On 3 Dec 2008, at 23:08, BarefootSanders wrote:

def check_enabled_flag
application_flag = ApplicationFlag.find(:first)

if application_flag.application_enabled
is this typo ? surely you only redirect when the application is not
enabled.

What version of rails is your app running ? For rails >= 2.0 then
redirecting from a filter halts execution, but in previous versions
you had to return false from the filter to achieve that.

Fred


#3

It seems the same filter is being executed for the redirected action
too…
so u r in infinite loop

make sure the filter is skipped for the action you are redirecting to.
use
this

before_filter :check_enabled_flag, :except=>[:disabled]

On Thu, Dec 4, 2008 at 1:08 AM, BarefootSanders removed_email_address@domain.invalid
wrote:

def check_enabled_flag
most once per action. Also note that neither redirect nor render
end


Mahmoud Said
Software Developer
blog.modsaid.com
www.eSpace.com.eg