2009-09-01 2 views
13

My Rails 2.3 앱은 HTML/CSS 또는 워드 문서로 페이지를 생성합니다. html 파일을 정적 파일 (즉, filename.html 또는 filename.doc)로 파일 시스템에 저장하고 싶습니다. 완전히 렌더링 된 페이지 및 '보고서 저장'버튼으로 미리보기 작업을 할 계획입니다. 사용자는 나중에 해당 정적 파일에 액세스합니다. (db에 대한 경로를 저장합니다.)렌더링 된 뷰를 정적 파일로 저장하는 방법은 무엇입니까?

어떻게해야합니까?

나는 파일을 생성하고 저장하는 것으로 생각되지만 렌더링 된 뷰를 가져 오는 방법을 모르겠습니다. 아무도 S3까지 저장하는 방법을 알고 있다면 보너스 포인트! 많은 감사합니다!

답변

27

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') 

재미있게하고 가위로 뛰지 마십시오.

+0

render_to_string !!! 환상적입니다. ADwR의 짧은 단락에서 숨겨졌습니다. 매력처럼 일했습니다. 모든 저장 작업이 완료되면 S3가 다음 단계로 진행됩니다. 엄청 고마워! – antm

0

또 다른 방법은 after_action을 컨트롤러에 추가하고 그 동작에서 response.body을 사용하여 렌더링 된 콘텐츠에 액세스하는 것입니다. 이렇게하면 컨트롤러가 정상적으로 클라이언트에 응답하고 그 동안 렌더링 된 컨텐트를 데이터베이스에 저장할 수 있습니다.

관련 문제