ruby-on-rails - 如何在 .html.slim 文件之间传递 ruby 变量
问题描述
我有电子邮件模板,我在其中保存和使用 ruby 变量:
### mailer/_body.html.slim
ruby:
start_day_number = @absence.starts_on.strftime('%d').to_i.ordinalize
end_day_number = @absence.ends_on.strftime('%d').to_i.ordinalize
start_date = @absence.starts_on.strftime('#{start_day_number} of %B (%A)')
end_date = @absence.ends_on.strftime('#{end_day_number} of %B (%A)')
type = @absence.type.capitalize
status = @absence.status.capitalize
p class="details"
| Starts: <b>#{start_date}</b><br />
| Ends: <b>#{end_date}</b><br />
| Type: <b>#{type}</b><br />
| Status: <b>#{status}<b><br />
有没有更方便和可读的方式将这些变量存储在另一个 .slim 文件中并将它们传递给模板?
理想情况下,我希望将它们存储在 layouts 目录中,如下所示:
### layouts/mailer.html.slim
doctype html
html
head
meta charset="utf-8"
css:
...
body
ruby:
start_date = @absence.starts_on.strftime('#{start_day_number} of %B (%A)')
end_date = @absence.ends_on.strftime('#{end_day_number} of %B (%A)')
...
== yield
..但它没有工作。
解决方案
装饰器模式正是我所需要的。谢谢汤姆勋爵!
推荐阅读
- shopify - 客户注册 - 识别现有电子邮件
- css - 如何通过 CSS 设置无效 p-inputNumber PrimeNg 表单组件的红色边框?
- reactjs - 用反引号反应原生要求
- c - 为什么此代码会因非行星命令行参数而失败?
- hadoop - 为什么名称节点只分配两个块而不是 3,尽管复制器设置设置为 3?
- typescript - 无法延长快递请求
- python - 直接向 Qmenu 对象添加触发器
- pine-script - 向现有指标添加警报
- reactjs - Redux-saga 不更新存储状态
- python - 向 sns.countplot 添加百分比 - 如何显示类别中两个值的百分比?