tutorial rails pagina instalar español descargar crear con ruby-on-rails ruby static-content

ruby-on-rails - pagina - ruby on rails tutorial



¿Cómo hacer contenido estático en Rails? (7)

Cree un PagesController para sus páginas estáticas (por ejemplo, contacto) e inserte

def contact_page end

en la inserción de config / routes.rb

get ''contact'' => ''pages#contact_page''

que mostrará el contenido de views / pages / contact_page.html.erb

Mirando diferentes opciones:

Una es simplemente colocar las páginas estáticas en la carpeta pública /, pero sí quiero que el encabezado del diseño / aplicación sea consistente.

Intenté esto, pero recibí un error:

# in routes.rb: map.connect ''*path'', :controller => ''content'', :action => ''show'' # in content_controller.rb: def show render :action => params[:path].join(''/'') end

Todo lo que quiero es una manera fácil de armar cosas como mis preguntas frecuentes, contactos, tos, privacidad y otras páginas que no sean de aplicación en algún lugar fácil simplemente creando un archivo .rhtml. quien ha hecho esto?


Para Rails5 y Rails4 puedes hacer lo siguiente:

Ponga la línea debajo al final de sus rutas.rb

get '':action'' => ''static#:action''

Luego las solicitudes para rootear / dar la bienvenida , representarán /app/views/static/welcome.html.erb .

No olvides crear un controlador "estático", aunque no tengas que poner nada allí.

Para Rails3 debes usar ''match'' en lugar de ''get''

match '':action'' => ''static#:action''


Prestar una acción no tiene sentido. Querrá renderizar una plantilla (o un archivo) con un diseño.

# Path relative to app/views with controller''s layout render :template => params[:path] # ... OR # Absolute path. You need to be explicit about rendering with a layout render :file => params[:path], :layout => true

Puede servir una variedad de plantillas diferentes de una sola acción con el almacenamiento en caché de página.

# app/controllers/static_controller.rb class StaticController < ApplicationController layout ''static'' caches_page :show def show valid = %w(static1 static2 static3) if valid.include?(params[:path]) render :template => File.join(''static'', params[:path]) else render :file => File.join(Rails.root, ''public'', ''404.html''), :status => 404 end end end

Por último, necesitaremos definir una ruta.

# config/routes.rb map.connect ''static/:path'', :controller => ''static'', :action => ''show''

Intente acceder a estas páginas estáticas. Si la ruta no incluye una plantilla válida, presentaremos el archivo 404 y obtendremos un estado 404.

  • http://localhost:3000/static/static1
  • http://localhost:3000/static/static3
  • http://localhost:3000/static/static2

Si echas un vistazo a la aplicación / público, verás un directorio / estático con static1.html, static2.html y static3.html. Después de acceder a la página por primera vez, las solicitudes posteriores serán totalmente estáticas gracias al almacenamiento en caché de la página.


Ten en cuenta si tienes 1 Home Controller con el método couple como show, aboutus, privacy:

class HomesController < ApplicationController def show end def privacy end def aboutus end end

Y asigna el método de mostrar a tu raíz y asigna el otro a algunas rutas con nombre como

map.root :controller => "homes", :action => "show" map.aboutus "/aboutus", :controller => "homes", :action => "aboutus" map.privacy "/privacy", :controller => "homes", :action => "privacy"

Y con vista para cada

app/views/homes/aboutus.html.erb --> you get http://localhost:3000/aboutus app/views/homes/show.html.erb --> you get http://localhost:3000 (root) app/views/homes/privacy.html.erb --> you get http://localhost:3000/privacy

Todos usan el mismo diseño en app / views / layout / application.html.erb


depende de la estructura de la url, si quieres que las rutas salgan de / (ej. / about_us), entonces:

map.connect '':action'', :controller => "static"

Esto debe ir al final de su archivo de rutas. Tirar sus archivos .html.erb a la aplicación / views / static y listo.

Por ejemplo, al lanzar about_us.html.erb , obtendrá una página en / about_us.

El ítem que tienes en tu pregunta es ideal para una ruta de catch all donde puedes analizar la matriz que se te da en params[:path] . Un poco más de información sobre eso en http://railscasts.com/episodes/46-catch-all-route



Lindsaar solución de Lindsaar es una de las mejores que he visto en mi vida. Construyó un caché de páginas estáticas que expiró cuando la revisión de git cambió.

<%= cache "site-page-#{@page_name}-#{App.git_revision}" do %> <%= render :partial => @page_name %> <% end %>