2017-04-25 6 views
0

Ich bin neu bei Schienen und ich möchte eine HTML-Seiten in ein PDF konvertieren. Ich benutze wicked_pdf gem für das. Mein Problem ist das PDF sollte für zwei Arten von Benutzern (Manager, Mitarbeiter) generiert werden. Für normale Mitarbeiter wird das PDF korrekt generiert. Aber wenn ein Manager versucht, PDF zu generieren, kann er nicht.Ich habe meinen Code angegeben.PDF ist nicht in wicked_pdf generiert

Dies ist mein Controller

@time_entries = TimeEntry.find(params[:ids]) 
    @project = Project.find_by_id(params[:project_id]) 
    @upcoming_week_tasks = @project.issues.open 
    opened_risks = Risk.where(project_identifier:  @project.identifier, status: Risk.get_open_statuses) 
    closed_risks = Risk.where("project_identifier = ? and updated_at >= ? and updated_at <= ? and status in (?)", @project.identifier, params[:wsr_start_date],params[:wsr_end_date], Risk.get_closed_statuses) 
    @risks = opened_risks + closed_risks 
    respond_to do |format| 
     format.js do 
     render :partial => "wsr_entries", :content_type => 'text/html' 
     end 
     format.pdf do 
     render pdf: "PRR-#{@project.name}", template: "wsr/prr.html.erb" 
     end 
    end 
    end 

ich eine Ajax-Funktion verwendet habe params zu holen für die controller.the Funktion unter

$("#pdf_link").click(function(e){ 
    e.preventDefault(); 
    var ids = []; 
    var project_id = $("#project_id").find(":selected").attr('value'); 
    $(".list input[type=checkbox]:checked").each(function(){ 
     ids.push($(this).attr('value')); 
    }); 

    $.ajax({ 
    url: '/get_prr.pdf', 
    type: 'POST', 
    data: {ids: ids, project_id: project_id } 
    }); 
}); 

und der Link-Tag in der Ansicht ist

gegeben
<% action_path = @managers.include?(@user) ? get_prr_path(:format => "pdf") : weekly_status_report_path(:format => "pdf")%> 
    <p id="pdf_link" style="display:none;"><%= link_to "Download PDF", action_path %></p> 

Wenn der normale Benutzer auf den Link klickt, sollte es für weekly_status_report_path gehen und wenn a Manager klickt auf den Befehl get_prr_path.

das Problem ist, beide Aktionen gut getan haben, aber das pdf nicht

erzeugt wird, wenn i Konsole überprüfen gibt es das folgende Zitat

Rendered wsr/_summary_of_time_entries.html.erb (6.2ms) 
    Rendered wsr/prr.html.erb (8.6ms) 
"***************[\"/home/likewise-open/CHENNAI/001133/.rvm/gems/ruby- [email protected]dmine1/bin/wkhtmltopdf\", \"-q\", \"file:////tmp/wicked_pdf20170425-20985-1kfny53.html\", \"/tmp/wicked_pdf_generated_file20170425-20985-1ke6sll.pdf\"]***************" 
    Rendered text template (0.0ms) 
Sent data PRR-WSR task check.pdf (2.2ms) 
Completed 200 OK in 1061ms 

Ich denke, das Problem mit der Ajax-Funktion ist.

Vielen Dank im Voraus und sorry für mein schlechtes Englisch :)

Antwort

0

Versuchen im format.html in Ihren respond_to Block hinzugefügt wird. Ich denke, wicked_pdf erwartet, dass es da sein wird, auch wenn Sie es nicht verwenden werden.

respond_to do |format| 
    format.html 
    format.js do 
    render :partial => "wsr_entries", :content_type => 'text/html' 
    end 
    format.pdf do 
    render pdf: "PRR-#{@project.name}", template: "wsr/prr.html.erb" 
    end 
end 
Verwandte Themen