Rails define o layout de dentro de um método before_filter
possível redefinir um layout padrão de dentro de um método before_filter no Rails
Tenho o seguinte como meu Contacts_controller.rb:
class ContactsController < ApplicationController
before_filter :admin_required, :only => [:index, :show]
def show
@contact = Contact.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @contact }
end
end
[...]
end
E o seguinte no meu application_controller.rb
class ApplicationController < ActionController::Base
layout 'usual_layout'
private
def admin_required
if !authorized? # please, ignore it. this is not important
redirect_to[...]
return false
else
layout 'admin' [???] # this is where I would like to define a new layout
return true
end
end
end
Sei que poderia colocar ...
layout 'admin', :only => [:index, :show]
... logo após "before_filter" em "ContactsController", mas como já tenho vários outros controladores com muitas ações sendo filtradas adequadamente como requeridas pelo administrador, seria muito mais fácil se eu pudesse redefinir o layout de "usual_layout" para "admin" dentro do método "admin_required".
BTW, colocando ...
layout 'admin'
... dentro de "admin_required" (como tentei no código acima), recebo uma mensagem de erro de método indefinido. Parece funcionar apenas fora de defs, assim como eu fiz para "usual_layout".
Desde já, obrigado