Il rendering di un'azione non ha senso. Dovrai rendere un modello (o un file) con un layout.
# 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
È possibile servire una varietà di modelli diversi da una singola azione con il caching della pagina.
# 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
Infine, sarà necessario definire un percorso.
# config/routes.rb
map.connect 'static/:path', :controller => 'static', :action => 'show'
Provare ad accedere a queste pagine statiche. Se il percorso non include un modello valido, eseguiremo il rendering del file 404 e restituiremo uno stato 404.
http://localhost:3000/static/static1
http://localhost:3000/static/static3
http://localhost:3000/static/static2
Se si dà un'occhiata in app/pubblico si noterà un/directory statica con static1.html, static2.html e static3.html . Dopo aver effettuato l'accesso alla pagina per la prima volta, eventuali richieste successive saranno completamente statiche grazie alla memorizzazione nella cache della pagina.
fonte
2009-07-18 04:26:17
collegamento interrotto: utilizzare: http://github.com/thoughtbot/high_voltage – Jonathan
Appena aggiunto a un progetto, funziona benissimo! – Abel