2011-06-27 20 views
17

Actualmente estoy trabajando en un proyecto y he encontrado un problema que nunca antes había encontrado. Actualmente, está haciendo una página de inicio de sesión que solicita al usuario que se registre. Tenía un método indefinido `name'error before, y luego me di cuenta de que el método no se llamaba nombre, se llamaba full_name. He revisado todas las carpetas para asegurarme de que ningún método o atributo se llame 'nombre' y lo haya cambiado a 'nombre completo'. Al actualizar el navegador, recibo el siguiente error que no he visto antes. ¿Pueden algunos explicar por favor qué es este error y cómo puedo posiblemente resolverlo? PlantillaFalta la plantilla

falta

Missing usuarios de la plantilla/crear con {: manipuladores => [: Erb,: rjs,: constructor, : RHTML,: rxml],: Formatos => [: html ], : locale => [: en,: es]} en vista de caminos "C:/Users/patterd/Documentos/Proyecto/app/views"

Respuesta

42

Este error se produce si no redirigir en el método create de su controlador.

¿Estás redireccionando en el método create en el controlador o representando el nuevo formulario, en caso de error?

Sin la redirección en el método de creación en el controlador, debe crear un nuevo archivo llamado create.html.erb. Por lo general, después de la creación exitosa, se redirige a otra página, como se muestra a continuación

def create 
    # some object you want to create 
    # if the object.save is fine 
    # redirect_to object 
    # else 
    # render new with the errors 
    # end 
end 
+0

Tengo un user_Controller, y contiene un método de creación. Que sigue 'code'def create @user = User.new (params [: user]) if @ user.save # Gestione un guardado exitoso. demás @title = "Registrarse" render 'nuevo' final final – David

+3

OK.after los puños redirect_to alguna página, por ejemplo, la redirección: action =>: espectáculo, por lo que va a una de las páginas que tienes con la extensión .html.erb. por lo general, será el index.html.erb (redirect_to: action =>: index) o el show.html.erb (redirect_to: action =>: show) – felix

+0

Oh, bien, te tengo. Entiendo por qué estoy recibiendo este error. Muchas gracias. – David

19

En mi caso tuve que procesar y hacer sin vistas.

def return_payment 
    # do lots of stuff 

    head :ok 
end 
+0

Eso también puede funcionar – David

2

que tenían el mismo problema y la razón fue que dejé accidentalmente otro método vacío 'crear' :)

2

generalmente se produce falta de error plantilla -cuando no tienes vista de archivos de ese método del controlador, o -si un método es solo para el cálculo que no tiene ningún archivo de vista, entonces debe tener que renderizar/redirigir el método.

Si no procesa o redirige el método, buscará la página de vista del nombre del método actual (en su caso buscará create.html.erb). Así que debe renderizar/redirigir el método .

0

Tuve el mismo problema y acabo de agregar el redirect_to ¡y funcionó!

def update 
    @visitor = Visitor.find(params[:id]) 
    if @visitor.update_attributes(visitor_params) 
     flash[:notice] = "Update ok!" 
     redirect_to root_path #just added this line and it worked! 
    else 
     render 'edit' 
    end 
end