我正在使用rails 2和resque。我想在resque作业完成执行时渲染部分。
我知道我们可以在lib文件中使用render
,redirect
等方法。
对此问题的任何建议?
答案 0 :(得分:0)
承认你想要的是从resque作业中获取部分或erb文件的渲染输出,你可以这样做:
require 'erb'
weekday = Time.now.strftime('%A')
simple_template = "Today is <%= weekday %>."
# you can also read from a file like so ERB.new(File.read(<file name here>))
renderer = ERB.new(simple_template)
puts output = renderer.result()
您可以在此处阅读更多内容http://www.stuartellis.eu/articles/erb/
答案 1 :(得分:0)
过去3天我一直在寻找解决方案..
终于在这里找到了..
http://www.rigelgroupllc.com/blog/2011/09/22/render-rails3-views-outside-of-your-controllers/
这也适用于rails 4!
av = ActionView::Base.new()
av.view_paths = ActionController::Base.view_paths
av.extend ApplicationHelper #or any other helpers your template may need
body = av.render(:template => "/orders/receipt.html.erb",:locals => {:order => order})
但问题是询问Rails 2解决方案,上面的链接提供了此代码。
body = ActionView::Base.new(Rails::Configuration.new.view_path).render(:file => "/orders/receipt.html.erb",:layout => false,:locals=>{:order=>order})