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

403 views
Skip to first unread message

BarefootSanders

unread,
Dec 3, 2008, 6:08:49 PM12/3/08
to Ruby on Rails: Talk
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

[code=]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".[/code]
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.

Frederick Cheung

unread,
Dec 4, 2008, 5:01:01 AM12/4/08
to rubyonra...@googlegroups.com

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

>
> 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
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

Mahmoud Said

unread,
Dec 4, 2008, 8:10:30 AM12/4/08
to rubyonra...@googlegroups.com
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]




to how to fix this?ef 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

[code=]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, y

thanks.





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


Reply all
Reply to author
Forward
0 new messages