Problemas con rutas.

16 views
Skip to first unread message

Paco Daza

unread,
Apr 26, 2013, 10:01:10 AM4/26/13
to ror...@googlegroups.com
Buenas! Hace un tiempo que escribí por aquí, y sigo dándoles vueltas y avanzado a pequeños pasos.

Tengo mi aplicación de posts has_many comentarios has_many ratings (esta última relaccion aún no está implementada).

Despues de anidar los recursos, soy capaz de mostrar los comentarios en la vista show del post, pero si intento crear un link para crear un nuevo comentario me da la mayoría de las veces un error de rutas o not defined. Lo he intentado de todas las formas que he encontrado y no se como avanzar, llegando a ser frustrante...

Este es el routes

resources :posts do
   
    resources :comments  do
    
    end
end

y los métodos del controller

def create
    @comment = @post.comments.build(params[:sensor])

    if @post.save
      redirect_to(post_comments_path, :notice => 'Comentario dado de alta.')
    else
      render :action => "new"
    end
  end

def new
    @comment = @post.comments.build

      respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @comment }
    end
  end

Encontrais algún error?
 
Un saludo!

Andrés Lucena

unread,
Apr 26, 2013, 10:04:46 AM4/26/13
to ror...@googlegroups.com, Paco Daza
El 26/04/13 11:01, Paco Daza escribi�:
> Buenas! Hace un tiempo que escrib� por aqu�, y sigo d�ndoles vueltas y
> avanzado a peque�os pasos.
>
> Tengo mi aplicaci�n de posts has_many comentarios has_many ratings
> (esta �ltima relaccion a�n no est� implementada).
>
> Despues de anidar los recursos, soy capaz de mostrar los comentarios
> en la vista show del post, pero si intento crear un link para crear un
> nuevo comentario me da la mayor�a de las veces un error de rutas o not
> defined. Lo he intentado de todas las formas que he encontrado y no se
> como avanzar, llegando a ser frustrante...

No veo nada que me rechine en el c�digo. Igual es que est�s haciendo mal
la parte del link. �Que est�s poniendo exactamente?

Para esto de las rutas suele venir muy bien el output del comando rake
routes

Saludos,
Andr�s

Alejandro Riera

unread,
Apr 26, 2013, 11:13:23 AM4/26/13
to ror...@googlegroups.com, Paco Daza
si lo que te da es un error de rutas lo más probable es que, efectivamente, estes construyendo mal las rutas.

si desde consola haces un "bundle exec rake routes" te salen listados los nombres de los helpers de rutas que rails te ha generado, la pinta que tienen esas rutas y sobre que controlador+accion mapean.

así de cabeza posiblemente veas algo como esto:

[...]
new_post_comment GET    /posts/:post_id/comments/new(.:format)   comments#new
post_comments    GET    /posts/:post_id/comments(.:format)       comments#index
                 POST   /posts/:post_id/comments(.:format)       comments#create
[...]



de modo que cuando quieras poner un enlace a la vista para crear un nuevo comentario tu código tendrá una pinta parecida a esto:

link_to "nuevo comentario", new_post_comment_path(@post)


En general revisa si estas utilizando correctamente los helpers de rutas que ha generado Rails a lo largo de tu código.

Al margen de eso, lo único que veo un poco raro en el código que nos pasas es lo siguiente:

def create
  @comment = @post.comments.build(params[:sensor])
  # [...]
end

Ese params[:sensor] resulta raro de primeras. No se si intencionado o se trata de un error. Lo normal sería que se llamara params[:comment], pero puede que lo hayas cambiado y todo funcione perfectamente.


Espero que te ayude ; )

Alex


Paco Daza

unread,
Apr 26, 2013, 12:10:28 PM4/26/13
to ror...@googlegroups.com
La solución ha sido utilizar link_to "nuevo comentario", new_post_comment_path(@post), como buen novato no sabía que fuese necesario enviar el @post y utilizaba  <%= link_to "New", new_post_comment_path %>, el cual me devuelve un error, concretamente undefined local variable or method

Muchas gracias a todos por la ayuda.
Reply all
Reply to author
Forward
0 new messages