I have a special case(does not normally occur) render in a filter.
Because its in a filter, I can’t end execution with a ‘return’ which
would work otherwise. Therefore I get this error:
Can only render or redirect once per action
My code in gist:
class MyController < ApplicationController
before_filter :authenticate
def priviledged_action
redirect_to :action => “vip_room”
end
protected
def authenticate
if params[:password] != “pass”
render :status => 403, :text => “Access denied”
# Things I have tried to end execution here:
# ‘return’ does end execution as simply returns filter
# ‘exit’ causes crash
# I can’t think of a way to use catch/throw
end
end
end
Can anyone please advise?
On Apr 8, 7:59 pm, Zac Z. [email protected] wrote:
I have a special case(does not normally occur) render in a filter.
Because its in a filter, I can’t end execution with a ‘return’ which
would work otherwise. Therefore I get this error:
Can only render or redirect once per action
what version of rails are you using ? In rails 2 and above rendering
from a filter should cause the filter chain to halt. in previous
versions you had to return false from your filter.
Fred
Frederick C. wrote:
what version of rails are you using ? In rails 2 and above rendering
from a filter should cause the filter chain to halt. in previous
versions you had to return false from your filter.
You’re right! My semi pseudocode oversimplified my actual code. There’s
a logic that prevents false being returned from the filter.
Thanks mate