有一個偉大的書在那裏:Crafting Rails 4 Applications。以下是link來源於本書的源代碼。您會在templater
文件夾中找到示例。基本上,您將能夠基於請求參數創建自定義模板(就像Rails一樣)。
更新。這裏有幾個鏈接:
- Default views in Rails 3.0 with custom resolvers通過JoséValim(書的作者,順便說一下)。
- Implementing a Rails 3 View Resolver。
而且,這裏的5枚硬幣從我這裏。基本上,它是這樣工作的。您需要定義自己的解析器和它連接到您的ApplicationController(或任何你想要的其他控制器):
class Resolver < ActionView::Resolver
# some code here
end
class ApplicationController < ActionController::Base
append_view_path Resolver.new
end
在渲染過程中,Rails會問你的控制器的解析器提供一個模板(它會經過各直到它找到模板或者直到沒有任何解析器離開爲止)。爲了提供模板,您的解析器需要find_templates
方法:
def def find_templates(name, prefix, partial, details)
# some processing here
end
因此,基於該方法的參數,你要提供一些數據庫記錄。但即使您已經有了某種模型,Rails也希望此方法返回ActionView::Template
實例。它可以初始化這樣的:
ActionView::Template.new(source, identifier, handler, details)
所以,這是怎麼你find_templates
應該是這樣的:
def find_templates(name, prefix, partial, details)
template = DatabaseTemplate.find... # your custom model for DB templates
ActionView::Template.new... # initializing actual template
end
兩個模型,並詳細解析書中的源代碼(templater/3_final/app/models/sql_template.rb
)介紹。
如果要更新文本,則必須將內容放入數據庫或某些其他txt文件中。所以當用戶改變,你必須重寫該文件 –
聽起來像一個正常的CMS。大多數CMS將他們的數據存儲在數據庫中。爲什麼你需要很多數據庫調用?你認爲多少? – Mischa
爲什麼要做這麼多的數據庫調用是不好的?這是一件很常見的事情。我寫的網站上的一些頁面需要做更多的請求來獲取所需的所有數據(產品,圖像,可下載的文檔...)以進行渲染。 –