Hola
Estoy creando un blog multiusuario a partir del plugin restful
authentication y asociando la clase post al usuario. El usuario se logea
correctamente y entonces es cuando quiero acceder a las funciones de
sitios.
Y hasta aquà todo bien. Sin embargo, creo un filtro para cargar el
usuario en el controlador de sitios para poder acceder a sus métodos y
cuando clico sobre el botón de acceso al método me aparece el siguiente
error:
Couldn’t find User without an ID
Pongo a continuación el código del método new de sitios.controller
def new
@sitio = @user.sitios.build
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @sitio }
end
No logro entender que está fallando. ¿Alguna sugerencia?
Un saludo y muchas gracias
On Sun, 13 Jul 2008 15:59:04 +0200
Javier S. [email protected] wrote:
error:
Couldn’t find User without an ID
Mira el log, verifica la consulta que está haciendo.
Verifica que la consulta para recuperar el usuario actual, probablemente
en el filtro, sea correcta.
Hoola,
estas haciendo referencia a @user y esta variable no la has iniciado en
ningun momento. deberias de hacer:
@user = current_user (current_user lo dispone el plugin), o bien, si la
variable @user no le vas a sacar provecho como instancia, pues
simplemente
hacer user = current_user o @sitio = current_user.sitios.build
Espero que te sirva,
Saludos
2008/7/13 Javier S. [email protected]:
De hecho, estaba pensando que quizá tenga que ver con el método create,
en lugar del new.
respond_to do |format|
if @post.save
flash[:notice] = ‘El post se ha creado satisfactoriamente.’
format.html { redirect_to(current_user) }
format.xml { render :xml => @post, :status => :created, :location
=> @post }
else
format.html { render :action => “new” }
format.xml { render :xml => @post.errors, :status =>
:unprocessable_entity }
end
end
end
Si os fijáis, la redirección la hago hacia current_user. ¿Es correcto?
Mi idea es que una vez creado el post, el usuario se redirija al show de
ese mismo post.
Saludos
Para redirigir al show del post tienes que hacer format.html {
redirect_to(@post) }
lo que tu has puesto te envia al show del usuario
FaltarÃa ver el código entero del método create,que deberÃa ser algo asÃ
@post = @user.posts.new(params[:post])
if @post.save
…
Creo que debes hecharle un vistazo con calma a REST y los recursos
anidados
(nested resources) ya que no tienes my claro como funciona y por
ensayo-error no vas a avanzar mucho y posiblemente pierdas la paciencia.
Te dejo aquà algunos enlaces
http://www.jaimeiniesta.com/2007/12/22/tutorial-recursos-anidados-con-rest-y-rails-2/
http://www.eparreno.com/2008/05/25/recursos-anidados-o-no-en-rest/
saludos
El dÃa 13 de julio de 2008 20:42, Javier S. <
[email protected]> escribió:
Antonio R. wrote:
Hoola,
estas haciendo referencia a @user y esta variable no la has iniciado en
ningun momento. deberias de hacer:
@user = current_user (current_user lo dispone el plugin), o bien, si la
variable @user no le vas a sacar provecho como instancia, pues
simplemente
hacer user = current_user o @sitio = current_user.sitios.build
Espero que te sirva,
Saludos
Hola, no habÃa caÃdo en lo de current_user y asà me deja llegar al new
post, pero cuando pincho sobre el submit button me redirige a una
pantalla con un 1 por todo texto (el único usuario que tengo tiene id 1)
y la ruta en la url es
http://localhost:3000/users/1/posts
Pero no me guarda el post en la base de datos.
Vuelvo a estar atascado. :S
Gracias por vuestra ayuda
Un saludo