2009-09-01 30 views
13

Ứng dụng Rails 2.3 của tôi tạo một trang bằng HTML/CSS hoặc dưới dạng tài liệu từ. Tôi muốn lưu tệp html đó vào hệ thống tệp dưới dạng tệp tĩnh (ví dụ: filename.html hoặc filename.doc). Tôi dự định có một hành động xem trước với trang được hiển thị đầy đủ và nút 'lưu báo cáo'. Người dùng của chúng tôi sẽ truy cập các tệp tĩnh sau này. (Tôi sẽ lưu đường dẫn đến db.)Cách lưu chế độ xem được hiển thị dưới dạng tệp tĩnh?

Bất kỳ đề xuất nào về cách thực hiện việc này?

Tôi đang tạo một tệp và lưu tệp, nhưng tôi không chắc chắn cách hiển thị chế độ xem được hiển thị của mình. Điểm thưởng nếu có ai biết cách lưu nó lên S3! Cảm ơn nhiều!

Trả lời

27

render_to_string là bạn của bạn. Một bạn có nó trong một chuỗi, ghi nó vào tập tin theo cách thông thường.

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 

Theo S3 đi, hãy xem aws-s3 gem. Nó dường như làm những gì bạn đang sau. Cách sử dụng là một chút như thế này.

AWS::S3::Base.establish_connection!(
    :access_key_id  => 'abc', 
    :secret_access_key => '123' 
) 
S3Object.store(file_name, data, 'bucket-name') 

Vui vẻ và không chạy bằng kéo.

+0

render_to_string !!! Điều đó thật tuyệt. Ẩn đi trong một đoạn văn ngắn trong ADwR. Làm việc như người ở. Một khi tôi nhận được tất cả các lưu làm việc, S3 sẽ được tiếp theo. Cảm ơn một tấn! – antm

0

Cách khác là thêm after_action vào bộ điều khiển và trong hành động đó sử dụng response.body để truy cập nội dung được hiển thị. Bằng cách này, bộ điều khiển của bạn có thể đáp ứng với máy khách như bình thường, lưu nội dung được hiển thị vào cơ sở dữ liệu trong khi đó.

Các vấn đề liên quan