我们的应用程序有“通知”,您可以通过网站上的收件箱查看这些“通知”,还可以通过电子邮件向您介绍这些通知。当您收到通知时,它会包含一个用于回复相关消息的链接。这可能意味着将 PM 发回给原始消息的发件人,或者可能意味着对帖子发表评论。
这是确定要使用的回复链接的代码:
if @notification.post
# comment on the post in question
@reply_link = new_comment_path(:post_id => @notification.post.id)
else
# by default, reply link sends a PM in return
@reply_link = new_notification_path(
:recipient_id => @notification.sender.id,
:subject => @notification.subject =~ /^Re: / ?
@notification.subject :
"Re: " + @notification.subject
)
end
我是从我们的控制器代码中获取的,顺便说一句:app/controllers/notifications_controller.rb
现在我们想在我们的电子邮件通知中包含相同的回复链接,这意味着我们需要在app/mailers/notifier.rb
我不想重复自己,所以我宁愿创建一个reply_link
方法并将其放在控制器和邮件程序都可以访问它的地方。
我的第一个想法是把它放在模型中,这样我们就可以拥有Notification.reply_link
. 这很好,但它不起作用,因为我们需要new_comment_path
并且new_notification_path
在模型中不可用。
我的第二个想法是使用助手,但是a)每个人似乎都认为助手很糟糕,b)我们无论如何都无法让它工作。
那么,我应该把这个方便reply_link
的方法放在哪里,以便控制器和邮件程序都可以访问它,并与良好的编码实践保持一致?