Estoy tratando de incluir un inicio de sesión (nombre de usuario/contraseña) en el encabezado de mi application.html.erb. Estoy consiguiendo este error:Rails 3 render parcial desde otro controlador (error: ActionView :: MissingTemplate)
Missing partial /login with {:handlers=>[:rjs, :builder, :rhtml, :erb, :rxml], :locale=>[:en, :en], :formats=>[:html]} in view paths "/app/views"
Esto sucede cuando hago esta llamada en mi application.html.erb:
<%= render '/login' %>
'/ login' se define en mi routes.rb como:
match '/login' => "sessions#new", :as => "login"
ACTUALIZACIÓN: aquí está mi controlador de sesiones:
class SessionsController < ApplicationController
def create
if user = User.authenticate(params[:email], params[:password])
session[:user_id] = user.id
user.last_login = Time.now
user.save
redirect_to root_path, :notice => "login successful"
else
flash.now[:alert] = "invalid login/password combination " # don't show pass + params[:password]
#render :action => "new"
redirect_to login_path, :notice => "wrong user pass"
end
end
def destroy
reset_session
redirect_to root_path, :notice => "successfully logged out"
end
end
He visto en otras publicaciones que esto puede deberse a que no se define una variable en una acción de controlador, pero como esta es una sesión, y está en la aplicación.html.erb (application_controller.rb), no estoy seguro de cómo hacer esto. ¿Alguien sabe cómo hacer esto? ¡Gracias!
¿dónde se encuentra exactamente tu parcial? Y, ¿por qué estás asignando una ruta de rutas en tu render? – prasvin
el parcial está en views/sessions/new.html.erb. La razón por la que estoy usando '/ login' en mi invocación para renderizar es porque pensé que haría que las vistas/sessions/new.html.erb fueran parciales. – botbot
ver la respuesta actualizada – prasvin