terça-feira, março 06, 2007

Uma view para muitos métodos no RoR

Dica simples, mas valiosa pra quem tá começando com Ruby on Rails:

Quando você cria um controller e define seus métodos, o RoR por padrão exige uma view para cada método. Vamos supor que você crie uma view de login para usuários cadastrados, e na mesma view,um cadastro para novos usuários. São duas ações, controladas por um mesmo controller, porém, por métodos diferentes.


Exemplo:




def login
if request.post?
perfil = Profile.find_by_email_and_password(params[:email],params[:password])
if perfil
render :text => "Usuário logado com sucesso"
else
flash[:notice] = "Usuário ou senha estão incorretos"
end
end
render_action "login"
end

def addnew
@profile = new Profile(params[:profile])
if request.post? and @profile.save
flash[:notice] = "Usuário cadastrado com sucesso"
render_action "login"
end



Neste caso, temos dois métodos: o addnew, que adiciona um novo usuário, e o login, responsável por autenticar o usuário já cadastrado. Para direcionarmos o resultado destes dois métodos para uma única view, é necessário a utilização da função render_action

No código acima, os dois métodos, depois de executados, redirecionarão o navegador para a view login.rhtml.

Nenhum comentário: