Как сохранить рендер-представление в виде статического файла?
Приложение My Rails 2.3 создает страницу в HTML/CSS или в виде слова doc. Я хотел бы сохранить этот html файл в файловой системе как статический файл (например, filename.html или filename.doc). Я планирую иметь действие предварительного просмотра с полностью отображаемой страницей и кнопкой "Сохранить отчет". Наши пользователи будут обращаться к этим статическим файлам позже. (Я сохраню путь к db.)
Любые предложения по тому, как это сделать?
Я до создания файла и сохранения его, но я не уверен, как получить его визуализированный вид. Бонусные очки, если кто-то знает, как сохранить его до S3! Большое спасибо!
Ответы
Ответ 1
render_to_string
является вашим другом. Один из них у вас есть в строке, записать его в файл обычным способом.
class FooController
def save_foo_to_disk
data = render_to_string( :action => :index )
File.open(file_path, "w"){|f| f << data }
flash[:notice] = "saved to #{file_path}"
end
end
Что касается S3, см. aws-s3 gem. Кажется, ты делаешь то, что тебе нужно. Использование немного похоже на это.
AWS::S3::Base.establish_connection!(
:access_key_id => 'abc',
:secret_access_key => '123'
)
S3Object.store(file_name, data, 'bucket-name')
Удачи и не бегайте с помощью ножниц.
Ответ 2
Другим способом является добавление after_action
к контроллеру и в этом действии с помощью response.body
для доступа к отображаемому контенту. Таким образом, ваш контроллер может реагировать на клиента как обычно, сохраняя отображаемый контент в базе данных тем временем.