REST y acts_as_tree

Hola a todos:

Me estoy metiendo en esto de REST y tengo un problema. En un modelo
llamado topic tengo que sea acts_as_tree. Me las medio ingenio para
que en index liste sólo los que no tienen padre y en el show, entre
otras cosas, muestre los hijos. Esto no sé si será correcto o si hay
alguna forma mejor de hacerlo.

Por otra parte, quiero que si le doy a nuevo dentro de show pasarle un
parámetro que sea el id del topic actual para que pueda estar
preseleccionado en el select correspondiente. ¿Cómo se hace? La mejor
aproximación que consigo es una URL del tipo topics/new?parent_id=1.

La aproximación del routes hacer lo de

map.resources :topics do |topic|
topic.resources :topics
end

no me sirve, pues de cada topic también penderán distintas descargas.

Un saludo y muchas gracias por adelantado,

Serabe

On 8/11/07, Serabe [email protected] wrote:

preseleccionado en el select correspondiente. ¿Cómo se hace? La mejor
aproximación que consigo es una URL del tipo topics/new?parent_id=1.

La aproximación del routes hacer lo de

map.resources :topics do |topic|
topic.resources :topics
end

no me sirve, pues de cada topic también penderán distintas descargas.

Que tal hacer algo como:

Padre tiene un controlador con un index donde vas a mostrar todos los
padres. Consulta Topic.find(:all, :conditions => [“parent_id is
NULL”])

routes.rb:
map.resources :topics do |topic|
topic.resources :subtopics, :path_prefix =>
“topics/:topic_id/subtopics/”
end

Controlador de los hijos (subtopics) mostras todos los hijos para el
topic padre de la anidacion, podrias setearlo con un before_filter,
por ejemplo:

before_filter :set_topic, :only => %w(index)

def index
@subtopics = @topic.subtopics
end

private
def set_topic
@topic = Topic.find(params[:topic_id])
end

Y en tu modelo:
class Topic < AR

acts_as_tree

def subtopics
self.children
end

end

Se me ocurre que puede ser una manera para hacer lo que queres y que
te quede bastante prolijo.

Disclaimer: Untested.

Saludos!

De momento va bien. Muchísimas gracias. Sólo una
pequeña corrección,por si alguien necesita de este hilo. El resources ha de ser como
sigue:

map.resources :topics do |topic|
topic.resources :subtopics, :path_prefix =>
“topics/:topic_id”
end

Lo que me medio preocupa es que elimina el DRY.

Muchas gracias de nuevo,

Serabe