Panoramic 技术文档
2024-12-27 20:06:22作者:彭桢灵Jeremy
本文档旨在帮助用户安装、使用和深入了解 Panoramic 项目。Panoramic 是一个 ActionView::Resolver 实现,允许用户将 Rails 视图(布局、模板和部分)存储在数据库中。
1. 安装指南
在 Gemfile 中添加以下行:
gem "panoramic"
然后运行 bundle install 来安装 gem。
2. 项目使用说明
必须字段
您的模型应包含以下字段:
body(text):模板的源代码path(string):模板的路径(例如:layouts/application,your_controller/action 等)locale(string):取决于应用程序中可用的语言环境handler(string):与locale字段类似,取决于可用的处理器(erb、haml 等)partial(boolean):确定是否为部分(默认为 false)format(string):Mime::SET.symbols 中的有效 MIME 类型
这些是 Rails 的 Resolver API 查找模板所需的字段。
模型
一个简单的宏在模型中将激活您的新 Resolver。您可以使用一个专用模型来管理应用程序中的所有视图,或仅用于特定需求(例如:您想要为某些静态页面自定义模板,其他视图将从文件系统中获取)。
class TemplateStorage < ActiveRecord::Base
store_templates
end
控制器
要添加 Panoramic::Resolver 到控制器,根据您的需求,您可以选择:
[prepend_view_path]:首先在解析器中搜索模板,然后在文件系统中搜索[append_view_path]:首先在文件系统中搜索模板,然后在解析器中搜索
注意:上述方法既是类方法也是实例方法。
class SomeController < ApplicationController
prepend_view_path TemplateStorage.resolver
def index
# Rails 默认将提供 'some/index' 模板,但它不关心模板存储在哪里。
end
def show
# 显式渲染
render :template => 'custom_template'
end
def custom_template
# 使用另一个模型获取模板
prepend_view_path AnotherModel.resolver
end
end
如果您想在所有控制器中使用数据库模板解析,但只想对特定路径(以 X 开头的路径)使用 panoramic,可以使用:
class ApplicationController < ActionController::Base
prepend_view_path TemplateStorage.resolver(:only => 'use_this_prefix_only')
end
这有助于减少数据库请求的数量,例如 Rails 尝试按控制器查找布局。
ActionMailer
class MyEmail < ActionMailer::Base
prepend_view_path TemplateStorage.resolver
end
使用 prepend_view_path/append_view_path 时,您将受限于当前上下文(例如调用 "mail" 的方法)。如果您想根据某个变量动态更改路径,可以在方法的上下文中调用 prepend_view_path/append_view_path 并传递一个额外的路径变量。如果您想要使用一个方法发送根据 template.path 不同而变化的模板,这可能会很有用。
class MyEmail < ActionMailer::Base
def method_that_sets_resolver_path
prepend_view_path TemplateStorage.resolver(:path => model.path)
end
end
3. 项目API使用文档
本项目不提供专门的 API 文档,但所有功能和方法已在代码和示例中详细说明。请参考项目代码和示例以获取更多信息。
4. 项目安装方式
请参考上文“安装指南”部分,使用以下命令安装项目:
# 在 Gemfile 中添加以下行
gem "panoramic"
# 运行 bundle install
确保遵循上述步骤以确保项目正确安装并可以使用。
登录后查看全文
热门项目推荐
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
项目优选
收起
deepin linux kernel
C
28
15
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
663
4.27 K
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.54 K
894
Ascend Extension for PyTorch
Python
506
612
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
393
292
暂无简介
Dart
909
219
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
69
21
昇腾LLM分布式训练框架
Python
142
168
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
940
868
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
1.33 K
108