Aparentemente, este tem sido um problema antigo em trilhos e existem muitas soluções como
ApplicationController.new.render_to_string( [...] )
mas isso não estava funcionando no meu caso, pois eu queria usar locais e um modelo.
Então eu tentei
def render_anywhere(partial, assigns= {})
view = ActionView::Base.new(Rails.configuration.paths['app/views'], assigns)
view.extend ApplicationHelper
fim
que também não estava funcionando, pois não era capaz de renderizar urls na exibição que.
Então, finalmente, me deparei com esse problema aqui
https://github.com/rails/rails/issues/11662
e adicionando
view.class_eval do
include Rails.application.routes.url_helpers
include ApplicationHelper
def protect_against_forgery?
false
end
end
resolveu o problema.