SuperAPI AI 工具集

rails-presenter

编程与开发

查看项目

更新于 10-16 04:08

技能介绍

用途

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),遵循开闭原则。
  • 金额以分为单位存储,显示为欧元。

使用方式

  1. 在 spec/presenters/ 下编写失败的规格(RED)。
  2. 运行规格确认 RED:bundle exec rspec spec/presenters/[resource]_presenter_spec.rb。
  3. 实现继承自 BasePresenter 的 Presenter(GREEN)。
  4. 再次运行规格确认 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 版本、依赖要求或平台限制,这些内容暂未提供。