Вы можете использовать send_data
вместо рендеринга страницы.Взгляните здесь .При этом вы можете сгенерировать свой файл и отправить его без сохранения на диск.Однако нормальная страница не будет отображаться.Но вы можете использовать его следующим образом:
1.Создайте нормальное представление HTML, например, для действия с индексом:
# controller
def index
@some_resources = SomeResources.all # just whatever you need
end
# somewhere in index.html.erb view
<img src="rendered_images/my_rendered_image.jpg" />
2.Добавьте маршрут для rendered_images
# routes
match "rendered_images/:filename" => "application#render_image"
3.Добавить действие рендеринга изображения в контроллере приложения
# application controller
def render_image
send_data my_function_to_generate_file, :filename => params[:filename], :type => 'image/jpeg', :disposition => :inline
end
Я не проверял его.Я надеюсь, что это даст вам кое-что для начала!