5

¿Cuál es la mejor manera de mostrar documentos HTML estáticos en Rails con un diseño? Obviamente, podría mantener los archivos HTML en el directorio public/, pero no podría aplicar un diseño, ¿o podría? De lo contrario podría poner el siguiente en config/routes.rb:Sirviendo HTML estático en Rails con un archivo de diseño

match ':page' => 'static#display', :page => /.+\.html/ 

¿El .+\.html trabajo por lo que termina con .html? De todos modos, si se asume que lo hizo, yo supongo que tendría un controlador:

class StaticController < ApplicationController 
    layout 'static_files' 
    def display 
    render params[:page] 
    end 
end 

Suponiendo que funciona correctamente, se Rubí innecesariamente a tratar de analizar el archivo HTML como un archivo de ERB? ¿Hay un mecanismo mejor que Rails tiene para esto?

+0

Según tengo entendido, parece que Rails analizará los archivos '.html' a través de' ERB' si los archivos tienen la extensión '.html.erb'. – knownasilya

Respuesta

2

Puede usar el high_voltage gem de Thoughtbot. Su propósito es incluir páginas estáticas en Rails, y utiliza cualquier lenguaje de plantillas que desee. Internamente, funciona de manera similar a las soluciones propuestas aquí.

Puede personalizar el archivo de diseño para cada página servida por high_voltage como se describe en here en el archivo Léame.

+0

Esto se ve perfecto, intentando esto ahora. –

5

Este tutorial tiene una muy buena explicación de las páginas estáticas en los rieles.

En primer lugar puede generar las páginas estáticas a través del generador de rieles:

rails generate controller StaticPages home help --no-test-framework 

A continuación, puede editar su config/routes.rb a tener el siguiente aspecto:

SampleApp::Application.routes.draw do 
    root to: 'static_pages#home' 
    match '/help', to: 'static_pages#help' 
    . 
    . 
    . 
end 

Y, finalmente, en su controlador StaticPages se crea los métodos home y help.

class StaticPagesController < ApplicationController 
    def home 
    end 

    def help 
    end 
end 

ACTUALIZACIÓN - quote source: Ruby on Rails Guides - Section 2.1

Usted ha oído que promueve rieles “convención sobre configuración”. La representación predeterminada es un excelente ejemplo de esto. De forma predeterminada, los controladores en Rails representan automáticamente vistas con nombres que corresponden a rutas válidas. Por ejemplo, si usted tiene este código en tu clase BooksController:

class BooksController < ApplicationController 
    #empty controller 
end 

Y lo siguiente en el archivo de rutas:

resources :books 

Y si usted tiene un archivo de vista app/views/books/index.html.erb, luego Rails renderizarlo incluso sin los métodos. Esto debería funcionar para cualquier ruta asignada/vistas equivalentes.

+3

No quiero crear 85 métodos en el controlador de páginas para mis 85 páginas html estáticas. Al igual que mi ejemplo anterior, quiero una ruta general para una única acción de controlador como máximo. –

+0

Actualicé mi respuesta. Pruébalo. – knownasilya

0

Crear un controlador para el manejo de las páginas estáticas

rails generate controller pages 

rutas Mapa de estas acciones en routes.rb

match '/home' => 'pages#home' 
match '/help' => 'pages#help' 
match '/contact' => 'pages#contact' 

crear acciones en el controlador páginas

def home 
CODE 
end 

def contact 
CODE 
end 

def help 
CODE 
end 

Por defecto, los carriles buscará ACTION.html.erb en la carpeta de visualización. Crea vistas y voila. Hazme saber si esto funciona para ti.

+1

No quiero crear 85 métodos en el controlador de páginas para mis 85 páginas html estáticas. Al igual que mi ejemplo anterior, quiero una ruta general para una única acción de controlador como máximo. –

Cuestiones relacionadas