Я пытаюсь инкапсулировать логику для создания моей карты сайта в отдельном классе, так что я могу использовать задержанный :: Работы для его генерации из группы:Trouble рендеринг представления в обобщенном классе
class ViewCacher
include ActionController::UrlWriter
def initialize
@av = ActionView::Base.new(Rails::Configuration.new.view_path)
@av.class_eval do
include ApplicationHelper
end
end
def cache_sitemap
songs = Song.all
sitemap = @av.render 'sitemap/sitemap', :songs => songs
Rails.cache.write('sitemap', sitemap)
end
end
Но всякий раз, когда я пытаюсь ViewCacher.new.cache_sitemap
я получаю эту ошибку:
ActionView::TemplateError:
ActionView::TemplateError (You have a nil object when you didn't expect it!
The error occurred while evaluating nil.url_for) on line #5 of app/views/sitemap/_sitemap.builder:
Я полагаю, это означает, что ActionController::UrlWriter
не входит в нужном месте, но я действительно не знаю,