获取Rails Observer或Sweeper访问link_to或从Observer中将视图呈现为字符串

时间:2010-08-14 13:48:19

标签: ruby-on-rails routes observer-pattern link-to

我配置了标准的rails观察器:

class TipObserver < ActionController::Caching::Sweeper
  observe Tip
  def after_save(tip)
    profile_link = link_to tip.profile.name, profile_path(tip.profile)
    Profile.followers(tip.quality).each{|profile|
      message = Message.new
      message.sender = Profile.first
      message.recipient = profile
      message.subject = "New Tip #{tip.name}"
      tip_link = link_to tip.name, tip_path(tip)
      message.body = "Hey #{profile.name}\n Here is a tip for you..#{tip_link} from #{profile_link}"
      message.save!
    }
  end
end

是的我知道这是设置为扫描程序 - 它与Observer基本相同但可以访问link_to方法,但它似乎没有配置路由。 profile_path和tip_path方法都是nil。

也许有另一种方法可以达到这个目的?或许更“Rails Way”?

如果有一种方法可以使用message.body的视图模板创建消息,那将是非常好的。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您需要访问控制器外部的路由,请包含ActionController :: UrlWriter模块。