呈現動作沒有意義。您將需要使用佈局呈現模板(或文件)。
# 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
您可以使用頁面緩存從單個動作提供各種不同的模板。
# 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
最後,我們需要定義一個路由。
# config/routes.rb
map.connect 'static/:path', :controller => 'static', :action => 'show'
嘗試訪問這些靜態頁面。如果路徑不包含有效的模板,我們將呈現404文件並返回404狀態。
http://localhost:3000/static/static1
http://localhost:3000/static/static3
http://localhost:3000/static/static2
如果你把在app /公開一看,你會發現有static1.html,static2.html和static3.html靜態/目錄。首次訪問該頁面後,由於頁面緩存,任何後續請求都將完全爲靜態。
斷開鏈接:使用:http://github.com/thoughtbot/high_voltage – Jonathan 2010-10-14 14:16:04
只需將其添加到一個項目中,它的效果非常好! – Abel 2010-10-18 07:04:19