Problema de rutas REST

Estoy empezando con el REST, y tengo un problema con rutas, pero no sé
qué es lo que está mal, a ver si alguien lo encuentra…

Se trata de una clase articulos y otra articulo_comentarios, ambas
montadas sobre la tabla contenidos, donde un articulo_comentario apunta
a un comentario a través del campo inicial_id:

Articulo:
set_table_name “contenidos”
has_many :articulo_comentarios, :foreign_key => ‘inicial_id’

ArticuloComentario:
set_table_name “contenidos”
belongs_to :articulo, :foreign_key => ‘inicial_id’

1.- La clase articulo_comentarios sí funciona de forma independiente:
map.resources :articulo_comentarios
link_to_remote “Nuevo”, :url => new_articulo_comentario_path(),
:method => :get

2.- Pero no funciona dentro de articulos:
map.resources :articulos do |articulo|
articulo.resources :articulo_comentarios
end
link_to_remote “Nuevo”, :url =>
new_articulo_comentario_path(@articulo), :method => :get

=> undefined method `new_articulo_comentario_path’ for
#ActionView::Base:0x5376900

3.- El problema no es @articulo, porque esto también funciona:
<%= link_to ‘Editar’, edit_articulo_path(@articulo) %>

Así que no sé si el problema está en que hay algo mal en el routes.rb,
en alguno de los modelos, o en la llamada
new_articulo_comentario_path(@articulo)

¿Alguna idea? ¿Algo que seguro que está bien y eso no es?

s2

=> undefined method `new_articulo_comentario_path’ for
#ActionView::Base:0x5376900

Hasta donde entiendo, al estar las rutas anidadas, ahora deberias usar
new_articulo_articulo_comentario_path(@articulo, @articulo_comentario)

Claro que las rutas anidadas todavia me marean, y puedo estar equivocado
:slight_smile:

3.- El problema no es @articulo, porque esto también funciona:
<%= link_to ‘Editar’, edit_articulo_path(@articulo) %>

Esto es porque articulo es la ruta de “mas afuera”.

¿Alguna idea? ¿Algo que seguro que está bien y eso no es?

Agregando map.resources :articulos_comentarios al routes.rb tendrias
las 2 opciones (anidadas y no anidadas), aunque no creo que sea muy
prolijo tener 2 formas de entrar a lo mismo.

On 17/01/2008, Fernando C. [email protected]
wrote:

Estoy empezando con el REST, y tengo un problema con rutas, pero no sé
qué es lo que está mal, a ver si alguien lo encuentra…
Así que no sé si el problema está en que hay algo mal en el routes.rb,
en alguno de los modelos, o en la llamada
new_articulo_comentario_path(@articulo)

¿Alguna idea? ¿Algo que seguro que está bien y eso no es?

Con un rake:routes lo verás enseguida :wink:

En todo caso, queda un poco feo un recurso llamado ArtículoComentario,
¿había algún problema con llamarlo Comentario? Así te liarías menos
con los helpers y demás.


Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.

Ricardo M. wrote:

Hasta donde entiendo, al estar las rutas anidadas, ahora deberias usar
new_articulo_articulo_comentario_path(@articulo, @articulo_comentario)

Claro que las rutas anidadas todavia me marean, y puedo estar equivocado
:slight_smile:

Efectivamente, estás equivocado: para editar sí se han de indicar el
padre y el actual, pero para crear uno nuevo sólo se indica el padre, en
este caso @articulo, ya que @articulo_comentario todavía no existe.

2008/1/17 Fernando C. [email protected]:

Ricardo M. wrote:

Hasta donde entiendo, al estar las rutas anidadas, ahora deberias usar
new_articulo_articulo_comentario_path(@articulo, @articulo_comentario)

Claro que las rutas anidadas todavia me marean, y puedo estar equivocado
:slight_smile:

Efectivamente, estás equivocado: para editar sí se han de indicar el
padre y el actual, pero para crear uno nuevo sólo se indica el padre, en
este caso @articulo, ya que @articulo_comentario todavía no existe.

Efectivamente, puse un parametro de mas al new_ :slight_smile:

Manuel González Noriega wrote:

Con un rake:routes lo ver�s enseguida :wink:

Efectivamente, muchas gracias!! con rake routes (con espacio, no con dos
puntos) enseguida me ha dicho que la respuesta correcta era
new_articulo_articulo_comentario_path(@articulo)

En todo caso, queda un poco feo un recurso llamado Art�culoComentario,
�hab�a alg�n problema con llamarlo Comentario? As� te liar�as menos
con los helpers y dem�s.

Efectivamente, queda feísimo, pero tengo otros comentarios que van sobre
la misma tabla pero no son comentarios de artículos y tengo que
separarlo claramente o lo liaré y será peor. Pensé en llamarles
Comentarticulo o algo así, pero al final se quedó con
ArticuloComentario, que es más clara para las personas pero mas liosa
para los helpers…

s2 y gracias a ambos!!

On 17/01/2008, Fernando C. [email protected]
wrote:

Manuel González Noriega wrote:

Efectivamente, queda feísimo, pero tengo otros comentarios que van sobre
la misma tabla pero no son comentarios de artículos y tengo que
separarlo claramente o lo liaré y será peor. Pensé en llamarles
Comentarticulo o algo así, pero al final se quedó con
ArticuloComentario, que es más clara para las personas pero mas liosa
para los helpers…

¿No sería mejor que utilizases una asociación polimórfica?

Con este plugin (1), podrías tener algo así

class Comentario < ActiveRecord::Base
has_many_polymorphs :comentables, :from => [:articulos, :posts,
:cualquier_otra_cosa]
end

class ComentableComentario < ActiveRecord::Base
belongs_to :comentario
belongs_to :comentable, :polymorphic => true
end

class Articulo

nada de nada

end

class CualquierOtraCosa
#nada de nada
end

Y todo con una sola tabla para los comentarios y otra de cruce.
Bastante más bonito y ampliable a otros modelos en 4 segundos.
Másbueno que las Artinatas.

(1)
http://blog.evanweaver.com/files/doc/fauna/has_many_polymorphs/files/README.html


Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.