用途
Rails Presenter Generator 用于在 Rails 项目中创建 Presenter 对象,把视图专用的格式化逻辑从模型中抽离出来。它采用 SimpleDelegator 模式包装模型,并遵循 TDD 流程:先写失败的规格,再实现代码。
主要能力
- 生成继承自 BasePresenter 的 Presenter 类,BasePresenter 继承自 SimpleDelegator。
- 通过 SimpleDelegator 代理模型方法,并暴露底层模型(model / object)。
- 包含 ActionView 辅助方法,用于数字、日期、URL、标签和文本格式化。
- 提供常见格式化方法示例:日期格式化(formatted_event_date、short_date、days_until)、货币格式化(formatted_budget、formatted_amount)、徽章/标签生成(status_badge、type_badge、display_tags)、联系方式链接(display_email、display_phone)。
- 对 nil 值返回占位 span(not_specified_span)。
- 使用 I18n 处理所有面向用户的文本。
- 颜色映射使用常量(STATUS_COLORS、DEFAULT_COLOR),遵循开闭原则。
- 金额以分为单位存储,显示为欧元。
使用方式
- 在 spec/presenters/ 下编写失败的规格(RED)。
- 运行规格确认 RED:
bundle exec rspec spec/presenters/[resource]_presenter_spec.rb。 - 实现继承自 BasePresenter 的 Presenter(GREEN)。
- 再次运行规格确认 GREEN。
在控制器中使用:
# 单个资源
@event = EventPresenter.new(@event)
# 集合
@events = events.map { |e| EventPresenter.new(e) }
# 带视图上下文(用于路由辅助方法)
@event = EventPresenter.new(@event, view_context)
项目约定
- Presenter 继承 BasePresenter < SimpleDelegator。
- 包含 ActionView 辅助方法用于格式化。
- 通过 SimpleDelegator 代理模型方法。
- 为徽章/格式化输出返回 HTML 安全字符串。
- 所有面向用户的文本使用 I18n。
适用场景
适用于需要从模型中提取视图逻辑、统一格式化展示数据的 Rails 项目,尤其是需要日期、货币、状态徽章、标签和联系方式等展示格式化的场景。
限制
资料未提供该技能的安装方式、收费信息、支持的 Rails 版本、依赖要求或平台限制,这些内容暂未提供。