Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

render_to_string doesn't work #34

Closed
quorak opened this issue Apr 17, 2011 · 5 comments
Closed

render_to_string doesn't work #34

quorak opened this issue Apr 17, 2011 · 5 comments

Comments

@quorak
Copy link

quorak commented Apr 17, 2011

doesn't seems to work anymore.

I want to send a File as Attachment, without saving it to the filesystem and using the header-render options.
pdf_helper is not supporting that unfortunately.

@unixmonkey
Copy link
Collaborator

Did it work before?

I recently moved the prerendering of headers and footers into the make_pdf method here:
30de4a2

This should allow you a lot more flexibility since before headers and footers were previously only made when calling render.

And aliased render_to_string to render_to_string_with_wicked_pdf here:
3fbcca0

This should help, not hurt what you are trying to do.

Are you doing this in a controller or a mailer?

Could you provide a little more information about what you are trying to do?

@quorak
Copy link
Author

quorak commented Apr 19, 2011

yeah, I'm rendering a pdf in a mailer and send it directly with the mail.
I came up with a Wrapper Standalone class! Might be usefull for someone.

class WickedPdfStandalone

  attr_accessor :av

  def pdf_from_options(options={},variables = {})



    self.av = ActionView::Base.new(Rails::Application::Configuration.new(Rails.root).view_path) unless av
    av.class_eval do
        include ApplicationHelper
    end


    variables.each{|key,value|
      av.instance_eval("#{key} = nil")
      av.instance_variable_set("@order",value)
    }

    html_string = av.render(:template => options[:template],:layout => nil)

    options = prerender_header_and_footer(options)

    w = WickedPdf.new(options[:wkhtmltopdf])
    return w.pdf_from_string(html_string, options)

  end


  private



  # Given an options hash, prerenders content for the header and footer sections
  # to temp files and return a new options hash including the URLs to these files.
  def prerender_header_and_footer(options)
    [:header, :footer].each do |hf|
      if options[hf] && options[hf][:html] && options[hf][:html][:template]
        WickedPdfTempfile.open("wicked_pdf.html") do |f|
          f << av.render(:template => options[hf][:html][:template],
                                :layout => nil)
          options[hf][:html].delete(:template)
          options[hf][:html][:url] = "file://#{f.path}"
        end
      end
    end

    return options
  end
end

@leifcr
Copy link

leifcr commented Nov 1, 2011

Thanks for the tip on putting it in a wrapper. Same issue here with render_to_string with header/footer in attachments.

Another option is to generate the pdf in a view, and attach the file by reading it from the view in the mailer. Although that would add another hit on the server.

@yuthura
Copy link

yuthura commented Jan 24, 2012

Wicked PDF is not available from the mailer. We needed this in a hurry for a project I'm working on some time ago, so I forked it and monkey patched it by adding ActionMailer::Base.send :include, PdfHelper
to wicked_pdf_railtie.rb. Then you can just do render :pdf and render_to_string :pdf from your mailers too. Might be useful to others, but didn't (and unfortunately won't) add any tests for this due to time constraints.

@taelor
Copy link

taelor commented Apr 10, 2012

I don't know if this will help anyone or not, but this is how I am rendering a PDF, and then attaching it to a email using Mailer. Check out the stuff dealing with "script"

https://github.com/taelor/radio/

https://github.com/taelor/radio/blob/master/app/controllers/episodes_controller.rb

https://github.com/taelor/radio/blob/master/app/mailers/episode_mailer.rb

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants