¿Sabéis algún sitio dónde esté explicado o sabéis cómo hacerlo?
Un saludo, y gracias por adelantado!
Juanjo.
No sé si el artículo que en su día citaba Manu es muy viejo, pero
ninguna de las dos cosas hace falta! Si en el directorio de vistas
correspondiente existe una con el nombre de la acción pedida, Rails
asume una acción vacía y renderiza el template (supongo que con un
truco interno similar al method_missing que contaba Fernando en su
blog) aunque no esté definida la acción en el controlador.
Lo que te puede estar fallando es que en Rails 2 cambia el esquema de
nombres y extensiones de las vistas. En particular, si tenías uno
llamado hola.rhtml, ahora deberás tener un hola.html.erb (el esquema
general es nombre_plantilla.formato.motor_de_render, así que los
mástípicos serán cosas como hola.html.erb y hola.atom.builder; puedes
leer más detalles en cualquiera de las recopilaciones de novedades en
Rails 2 como http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done).
Si tienes un map.resources :pages, http://localhost:3000/pages/aboutus
no está ejecutando la acción aboutus, sino la acción show con el
parametro id a aboutus. Me temo que no puedes mezclar las dos cosas y
tendrás que usar otro truco, aunque en cualquier caso, si dices que
las pages no van a estar en base de datos sino en templates (son
estáticas), no tiene mucho sentido que mapees el recurso, ¿no? (ni que
tengas un modelo Page, ya que estamos).
On Dec 28, 2007, at 9:12 PM, Sergio Gil Pérez de la Manga wrote:
No sé si el artículo que en su día citaba Manu es muy viejo, pero
ninguna de las dos cosas hace falta! Si en el directorio de vistas
correspondiente existe una con el nombre de la acción pedida, Rails
asume una acción vacía y renderiza el template (supongo que con un
truco interno similar al method_missing que contaba Fernando en su
blog) aunque no esté definida la acción en el controlador.
Casi casi
def perform_action
if self.class.action_methods.include?(action_name)
send(action_name)
default_render unless performed?
elsif respond_to? :method_missing
method_missing action_name
default_render unless performed?
elsif template_exists? && template_public?
default_render
else
raise UnknownAction, “No action responded to #{action_name}”,
caller
end
end
Aunque si solo sirve ese tipo de cosas igual acabas antes quitando eso
y dejando que se dispare la default :controller/:action, sera RESTful
igualmente.
Me he decidido por hacer un controlador nuevo destinado solo a contenido
estático.
class StaticsController < ApplicationController
def perform_action
if self.class.action_methods.include?(action_name)
send(action_name)
default_render unless performed?
elsif respond_to? :method_missing
method_missing action_name
default_render unless performed?
elsif template_exists? && template_public?
default_render
else
raise UnknownAction, “No action responded to #{action_name}”,
caller
end
end
end
En las vistas (views/statics/) pongo los ficheros loquesea.html.erb y
funcionando. Eso sÃ, no he puesto el recurso en routes.rb
Muchas gracias a todos por la solución!
El vie, 28-12-2007 a las 15:44 -0500, Luis Felipe Hurtado C.
escribió:
Hola,
...
escribió:
> >
> > > public/, sino en crear un controlador estático que me
http://www.tabernadelturco.com/2006/01/08/renderizar-paginas-estaticas-en-rails/
> ninguna de las dos cosas hace falta! Si en el directorio de
esquema de
> Rails 2 como
Aplicadas
Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es
raise UnknownAction, "No action responded to #{action_name}",
caller
end
end
Todo este código no te hace falta! Lo que te ha copiado Xavi es el
código de Rails que hace que esa “magia” funcione (vaya, si no estoy
definitivamente tolai).
On Dec 28, 2007, at 10:10 PM, Sergio Gil Pérez de la Manga wrote:
else
raise UnknownAction, “No action responded to #{action_name}”,
caller
end
end
Todo este código no te hace falta! Lo que te ha copiado Xavi es el
código de Rails que hace que esa “magia” funcione (vaya, si no estoy
definitivamente tolai).
¿Tiene sentido que una pagina “estàtica” esté definida como un
“resource”?
Francesc
On Dec 28, 2007, at 9:40 PM, Xavier N. wrote:
…
Aunque si solo sirve ese tipo de cosas igual acabas antes quitando eso
y dejando que se dispare la default :controller/:action, sera RESTful
igualmente.