如何修改Rails 7邮件预览页面的邮件排列顺序?
自定义Rails 7邮件预览页面的展示顺序
Rails 默认会按邮件预览方法的字母顺序排列,要改成自定义顺序,直接在对应的邮件预览类里重写 preview_methods 方法即可,以下是几种常用方式:
1. 固定指定顺序
如果你的邮件有明确的逻辑顺序,直接把方法名按想要的顺序放进数组返回:
class TeamMailerPreview < ActionMailer::Preview # 重写preview_methods定义展示顺序 def preview_methods # 按你需要的顺序列出所有预览方法名 %w[welcome_onboarding project_invitation task_assigned deadline_reminder payment_confirmation] end # 你的各个邮件预览方法 def welcome_onboarding TeamMailer.welcome_onboarding(User.sample) end def project_invitation TeamMailer.project_invitation(User.sample, Project.sample) end # 其他预览方法... end
2. 按方法定义顺序展示
如果你希望预览顺序和你在类里写方法的顺序一致,直接返回未排序的实例方法列表:
class TeamMailerPreview < ActionMailer::Preview def preview_methods # instance_methods(false)返回当前类定义的所有公开方法,顺序和定义时一致 instance_methods(false).map(&:to_s) end # 按你想要的顺序写预览方法 def first_email # ... end def second_email # ... end end
3. 动态排序
如果需要根据方法名的规则动态排序(比如方法名包含步骤编号),可以在preview_methods里做排序逻辑:
class TeamMailerPreview < ActionMailer::Preview def preview_methods # 假设方法名格式是 step_1_xxx, step_2_xxx,按数字排序 super.sort_by do |method_name| method_name.split('_')[1].to_i end end end
原理说明:Rails 默认的preview_methods方法会返回当前类的所有公开实例方法,然后按字母排序。重写这个方法后,预览页面就会使用你返回的方法列表顺序展示。
内容的提问来源于stack exchange,提问作者Mark Locklear
相关产品推荐
相关产品推荐

