Pergunta

Provavelmente, essa é mais uma pergunta de design ou uso, mas o problema principal é usar o plug -in de camarão com o Rails 2.3.4 e acessar o objeto PDF resultante para renderizá -lo a um arquivo.

O cenário é basicamente;

  • um controlador com a configuração do respondente_to
  • uma visualização com código para renderizar o texto, gráficos etc. para pdf

Parece:
Do controlador do cliente

def show    
    @customer = Customer.find(params[:id])  

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @customer }
      format.pdf  { render :layout => false  }
end

Da visualização do cliente

  pdf.text "Hello World"  
  pdf.text "Customer is #{@customer.name}"

Isso funciona bem, produzindo um arquivo PDF em resposta a /customers/1.pdf, conforme esperado com um arquivo PDF sendo gerado.

Um dos outros requisitos é renderizar o PDF a um arquivo e armazenar uma cópia no servidor. Prawn fornece o método:pdf.render_file {path_tofile}

Então agora, se eu incluir isso no código de exibição, posso, obviamente, salvar o arquivo no servidor. Mas eu gostaria de gerenciar isso no controlador, pois está relacionado à lógica, não à visualização em si.

A primeira tentativa foi:

def show    
   @customer = Customer.find(params[:id])
   @pdf = Prawn::Document.new()  

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @customer }
      format.pdf  { render :layout => false  }
      pdf.render_file {path_to_file}
end

Da visualização do cliente

  pdf.text "Hello World"  
  pdf.text "Customer is #{@customer.name}"

PROBLEMAO problema com essa tentativa é que o PDF não é renderizado. Eu suspeitava que a variável da instância do controlador esteja em conflito com o plugin de camarão pdf variável. Mas mesmo mudar a variável em PDF não funcionou. Alguma sugestão ?

Foi útil?

Solução

É assim que eu uso o camarão no meu aplicativo Rails: http://yob.id.au/2009/05/30/prawn-and-x-accel-redirect.html - Não usa Prawnto.

Você pode ignorar o material X-Acel-Redirect, a menos que use o nginx.

Como alternativa, outro dos desenvolvedores de camarão montou este guia: http://wiki.github.com/sandal/prawn/using-prawn-in-lails

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top