Wicked_PDF does not download when I switch to using form_with instead of form_tag












0














I noticed a bug with my view where my form could not be submitted after the initial submission to generate a PDF, and during research saw that form_with was the recommended way to build forms going forward with rails. I updated my form, and everything seems to be working the way it's supposed to, but now the PDF doesn't download as before and just seems to render the string in a response without generating the file. Using Wicked-PDF and Rails 5.2.1. Sorry if I'm missing something super obvious!



Using form_tag (pdf downloads as expected):



form in view:



<%= form_tag("download_pdf", format: :pdf, method: "get") do %>
<div class="input-group mb-3">
<%= collection_select(:location, :id, Location.all, :id, :name, {:include_blank => 'Filter by location'}, {:id => 'qr_code_loc_select', :selected_value => '', :name => 'location', :style=> 'width: 17em', :autocomplete => 'off'}) %>
</div>
<div class="input-group mb-3">
<%= collection_select(:name, :id, DeviceType.all, :id, :name, {:include_blank => 'Filter by device type'}, {:id => 'qr_device_type_select', :selected_value => '', :name => "device_type", :style=> 'width: 17em', :autocomplete => 'off'}) %>
</div>
<div class="input-group mb-3">
<input type="number" name="width" class="form-control label_size_input" id="label_width" step="0.001" placeholder="Label Width" autocomplete ='off' aria-describedby="basic-addon3">
<div class="input-group-append">
<span class="input-group-text">inches</span>
</div>
</div>
<div class="input-group mb-3">
<input type="number" name="height" class="form-control label_size_input" id="label_height" step="0.001" placeholder="Label Height" autocomplete ='off' aria-describedby="basic-addon3">
<div class="input-group-append">
<span class="input-group-text">inches</span>
</div>
</div>
<%= label_tag "qr_col", "Columns:", class:"ml-2 text-light" %>
<div class="input-group mb-3">
<%= select_tag "qr_col", options_for_select(["1","2", "3", "4", "5"], "3"), {:autocomplete => 'off'}%>
</div>
<%= label_tag "paper_size", "Paper Size:", class:"ml-2 text-light" %>
<div class="input-group mb-3">
<%= select_tag "paper_size", options_for_select(@paper_size, "A4"), {:autocomplete => 'off'}%>
</div>
<div class="btn-group mb-3" role="group" aria-label="pdf_export_button" id="pdf_export">
<%= hidden_field_tag :column_number %>
<%= hidden_field_tag :label_size %>
<%= hidden_field_tag :format, "pdf" %>
<%= submit_tag("Create PDF Document", {:class=> "btn btn-secondary"}) %>
<% end %>
</div>


in controller:



def download_pdf
@columns = params[:column_number].to_i
@height = params[:height]
@width = params[:width]
@paper_size = params[:paper_size]
@type = params[:device_type]
@location = params[:location]
if @type.blank?
if @location.blank?
@devices = Device.all
else
@devices = get_devices_by_location(@location)
end
else
if @location.blank?
@devices = Device.where('device_type_id=?', @type)
else
@devices = get_devices_by_type_and_location(@type, @location)
end
end
pdf_string = render_to_string(
template: "qr_codes/show.html.erb",
layout: "layouts/pdf_layout.pdf.erb",
viewport_size: '1280x1024',
page_size: @paper_size
)
respond_to do |format|
format.pdf do
pdf = WickedPdf.new.pdf_from_string(pdf_string)
send_data pdf, :filename => "report.pdf", :type => "application/pdf"
end
end
end


in console:



    Started GET "/qr_codes/download_pdf?utf8=%E2%9C%93&location=&device_type=&width=&height=&qr_col=3&paper_size=A4&column_number=3&label_size=&format=pdf&commit=Create+PDF+Document" for 127.0.0.1 at 2018-11-14 20:03:51 -0500
Processing by QrCodesController#download_pdf as PDF
Parameters: {"utf8"=>"✓", "location"=>"", "device_type"=>"", "width"=>"", "height"=>"", "qr_col"=>"3", "paper_size"=>"A4", "column_number"=>"3", "label_size"=>"", "commit"=>"Create PDF Document"}
Rendering qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb
(0.4ms) SELECT COUNT(*) FROM "devices"
Device Load (0.6ms) SELECT "devices".* FROM "devices"
Rendered qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb (778.0ms)
"***************["/Users/joe/.rbenv/versions/2.5.0/bin/wkhtmltopdf", "-q", "file:////var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf20181114-912-1opkhpt.html", "/var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf_generated_file20181114-912-m57i12.pdf"]***************"
Rendering text template
Rendered text template (0.1ms)
Sent data report.pdf (1.7ms)
Completed 200 OK in 3077ms (Views: 1.2ms | ActiveRecord: 1.0ms)


Using form_with (pdf does not generate as expected and only has an unformatted string in response):



form in view:



 <%= form_with url: download_pdf_path(format: :pdf), method: "get" do |f| %>
<div class="input-group mb-3">
<%= f.collection_select(:id, Location.all, :id, :name, {:include_blank => 'Filter by location'}, {:id => 'qr_code_loc_select', :selected_value => '', :name => 'location', :style=> 'width: 17em', :autocomplete => 'off'}) %>
</div>
<div class="input-group mb-3">
<%= f.collection_select(:id, DeviceType.all, :id, :name, {:include_blank => 'Filter by device type'}, {:id => 'qr_device_type_select', :selected_value => '', :name => "device_type", :style=> 'width: 17em', :autocomplete => 'off'}) %>
</div>
<div class="input-group mb-3">
<%= f.number_field nil, {:name => "width", :id => "label_width", :class => "form-control label_size_input", :step => "0.001", :placeholder => "Label Width", :autocomplete => 'off'} %>
<div class="input-group-append">
<span class="input-group-text">inches</span>
</div>
</div>
<div class="input-group mb-3">
<%= f.number_field nil, {:name => "height", :id => "label_height", :class => "form-control label_size_input", :step => "0.001", :placeholder => "Label Height", :autocomplete => 'off'} %>
<div class="input-group-append">
<span class="input-group-text">inches</span>
</div>
</div>
<%= label_tag "qr_col", "Columns:", class:"ml-2 text-light" %>
<div class="input-group mb-3">
<%= f.select "column_number", options_for_select(["1","2", "3", "4", "5"], "3"), {:autocomplete => 'off'}, :id => "qr_col"%>
</div>
<%= label_tag "paper_size", "Paper Size:", class:"ml-2 text-light" %>
<div class="input-group mb-3">
<%= f.select "paper_size", options_for_select(@paper_size, "A4"), {:autocomplete => 'off'}%>
</div>
<div class="btn-group mb-3" role="group" aria-label="pdf_export_button" id="pdf_export">
<%= f.hidden_field :label_size %>
<%= f.submit("Create PDF Document", {:class=> "btn btn-secondary", :data => { turbolinks: false }}) %>
</div>
<% end %>


controller:



def download_pdf
@columns = params[:column_number].to_i
@height = params[:height]
@width = params[:width]
@paper_size = params[:paper_size]
@type = params[:device_type]
@location = params[:location]
if @type.blank?
if @location.blank?
@devices = Device.all
else
@devices = get_devices_by_location(@location)
end
else
if @location.blank?
@devices = Device.where('device_type_id=?', @type)
else
@devices = get_devices_by_type_and_location(@type, @location)
end
end
respond_to do |format|
format.pdf do
pdf = WickedPdf.new.pdf_from_string(
render_to_string(
template: 'qr_codes/show.html.erb',
layout: 'layouts/pdf_layout.pdf.erb',
page_size: @paper_size
),
)
send_data pdf, :filename =>'PDF Report-' + Time.now.strftime('%v %H:%M:%S').to_s, disposition: 'attachment', :type => "application/pdf"
end
end
end


in console:



    Started GET "/qr_codes/download_pdf_path?utf8=%E2%9C%93&location=&device_type=&width=&height=&column_number=3&paper_size=A4&label_size=&format=pdf&commit=Create%20PDF%20Document" for 127.0.0.1 at 2018-11-14 20:01:04 -0500
Processing by QrCodesController#download_pdf as PDF
Parameters: {"utf8"=>"✓", "location"=>"", "device_type"=>"", "width"=>"", "height"=>"", "column_number"=>"3", "paper_size"=>"A4", "label_size"=>"", "commit"=>"Create PDF Document"}
Rendering qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb
(0.3ms) SELECT COUNT(*) FROM "devices"
Device Load (1.2ms) SELECT "devices".* FROM "devices"
Rendered qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb (453.5ms)
"***************["/Users/joe/.rbenv/versions/2.5.0/bin/wkhtmltopdf", "-q", "file:////var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf20181114-912-1ym4a9q.html", "/var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf_generated_file20181114-912-edkha0.pdf"]***************"
Rendering text template
Rendered text template (0.1ms)
Sent data PDF Report-14-NOV-2018 20:01:07 (1.6ms)
Completed 200 OK in 2682ms (Views: 1.1ms | ActiveRecord: 1.5ms)









share|improve this question





























    0














    I noticed a bug with my view where my form could not be submitted after the initial submission to generate a PDF, and during research saw that form_with was the recommended way to build forms going forward with rails. I updated my form, and everything seems to be working the way it's supposed to, but now the PDF doesn't download as before and just seems to render the string in a response without generating the file. Using Wicked-PDF and Rails 5.2.1. Sorry if I'm missing something super obvious!



    Using form_tag (pdf downloads as expected):



    form in view:



    <%= form_tag("download_pdf", format: :pdf, method: "get") do %>
    <div class="input-group mb-3">
    <%= collection_select(:location, :id, Location.all, :id, :name, {:include_blank => 'Filter by location'}, {:id => 'qr_code_loc_select', :selected_value => '', :name => 'location', :style=> 'width: 17em', :autocomplete => 'off'}) %>
    </div>
    <div class="input-group mb-3">
    <%= collection_select(:name, :id, DeviceType.all, :id, :name, {:include_blank => 'Filter by device type'}, {:id => 'qr_device_type_select', :selected_value => '', :name => "device_type", :style=> 'width: 17em', :autocomplete => 'off'}) %>
    </div>
    <div class="input-group mb-3">
    <input type="number" name="width" class="form-control label_size_input" id="label_width" step="0.001" placeholder="Label Width" autocomplete ='off' aria-describedby="basic-addon3">
    <div class="input-group-append">
    <span class="input-group-text">inches</span>
    </div>
    </div>
    <div class="input-group mb-3">
    <input type="number" name="height" class="form-control label_size_input" id="label_height" step="0.001" placeholder="Label Height" autocomplete ='off' aria-describedby="basic-addon3">
    <div class="input-group-append">
    <span class="input-group-text">inches</span>
    </div>
    </div>
    <%= label_tag "qr_col", "Columns:", class:"ml-2 text-light" %>
    <div class="input-group mb-3">
    <%= select_tag "qr_col", options_for_select(["1","2", "3", "4", "5"], "3"), {:autocomplete => 'off'}%>
    </div>
    <%= label_tag "paper_size", "Paper Size:", class:"ml-2 text-light" %>
    <div class="input-group mb-3">
    <%= select_tag "paper_size", options_for_select(@paper_size, "A4"), {:autocomplete => 'off'}%>
    </div>
    <div class="btn-group mb-3" role="group" aria-label="pdf_export_button" id="pdf_export">
    <%= hidden_field_tag :column_number %>
    <%= hidden_field_tag :label_size %>
    <%= hidden_field_tag :format, "pdf" %>
    <%= submit_tag("Create PDF Document", {:class=> "btn btn-secondary"}) %>
    <% end %>
    </div>


    in controller:



    def download_pdf
    @columns = params[:column_number].to_i
    @height = params[:height]
    @width = params[:width]
    @paper_size = params[:paper_size]
    @type = params[:device_type]
    @location = params[:location]
    if @type.blank?
    if @location.blank?
    @devices = Device.all
    else
    @devices = get_devices_by_location(@location)
    end
    else
    if @location.blank?
    @devices = Device.where('device_type_id=?', @type)
    else
    @devices = get_devices_by_type_and_location(@type, @location)
    end
    end
    pdf_string = render_to_string(
    template: "qr_codes/show.html.erb",
    layout: "layouts/pdf_layout.pdf.erb",
    viewport_size: '1280x1024',
    page_size: @paper_size
    )
    respond_to do |format|
    format.pdf do
    pdf = WickedPdf.new.pdf_from_string(pdf_string)
    send_data pdf, :filename => "report.pdf", :type => "application/pdf"
    end
    end
    end


    in console:



        Started GET "/qr_codes/download_pdf?utf8=%E2%9C%93&location=&device_type=&width=&height=&qr_col=3&paper_size=A4&column_number=3&label_size=&format=pdf&commit=Create+PDF+Document" for 127.0.0.1 at 2018-11-14 20:03:51 -0500
    Processing by QrCodesController#download_pdf as PDF
    Parameters: {"utf8"=>"✓", "location"=>"", "device_type"=>"", "width"=>"", "height"=>"", "qr_col"=>"3", "paper_size"=>"A4", "column_number"=>"3", "label_size"=>"", "commit"=>"Create PDF Document"}
    Rendering qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb
    (0.4ms) SELECT COUNT(*) FROM "devices"
    Device Load (0.6ms) SELECT "devices".* FROM "devices"
    Rendered qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb (778.0ms)
    "***************["/Users/joe/.rbenv/versions/2.5.0/bin/wkhtmltopdf", "-q", "file:////var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf20181114-912-1opkhpt.html", "/var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf_generated_file20181114-912-m57i12.pdf"]***************"
    Rendering text template
    Rendered text template (0.1ms)
    Sent data report.pdf (1.7ms)
    Completed 200 OK in 3077ms (Views: 1.2ms | ActiveRecord: 1.0ms)


    Using form_with (pdf does not generate as expected and only has an unformatted string in response):



    form in view:



     <%= form_with url: download_pdf_path(format: :pdf), method: "get" do |f| %>
    <div class="input-group mb-3">
    <%= f.collection_select(:id, Location.all, :id, :name, {:include_blank => 'Filter by location'}, {:id => 'qr_code_loc_select', :selected_value => '', :name => 'location', :style=> 'width: 17em', :autocomplete => 'off'}) %>
    </div>
    <div class="input-group mb-3">
    <%= f.collection_select(:id, DeviceType.all, :id, :name, {:include_blank => 'Filter by device type'}, {:id => 'qr_device_type_select', :selected_value => '', :name => "device_type", :style=> 'width: 17em', :autocomplete => 'off'}) %>
    </div>
    <div class="input-group mb-3">
    <%= f.number_field nil, {:name => "width", :id => "label_width", :class => "form-control label_size_input", :step => "0.001", :placeholder => "Label Width", :autocomplete => 'off'} %>
    <div class="input-group-append">
    <span class="input-group-text">inches</span>
    </div>
    </div>
    <div class="input-group mb-3">
    <%= f.number_field nil, {:name => "height", :id => "label_height", :class => "form-control label_size_input", :step => "0.001", :placeholder => "Label Height", :autocomplete => 'off'} %>
    <div class="input-group-append">
    <span class="input-group-text">inches</span>
    </div>
    </div>
    <%= label_tag "qr_col", "Columns:", class:"ml-2 text-light" %>
    <div class="input-group mb-3">
    <%= f.select "column_number", options_for_select(["1","2", "3", "4", "5"], "3"), {:autocomplete => 'off'}, :id => "qr_col"%>
    </div>
    <%= label_tag "paper_size", "Paper Size:", class:"ml-2 text-light" %>
    <div class="input-group mb-3">
    <%= f.select "paper_size", options_for_select(@paper_size, "A4"), {:autocomplete => 'off'}%>
    </div>
    <div class="btn-group mb-3" role="group" aria-label="pdf_export_button" id="pdf_export">
    <%= f.hidden_field :label_size %>
    <%= f.submit("Create PDF Document", {:class=> "btn btn-secondary", :data => { turbolinks: false }}) %>
    </div>
    <% end %>


    controller:



    def download_pdf
    @columns = params[:column_number].to_i
    @height = params[:height]
    @width = params[:width]
    @paper_size = params[:paper_size]
    @type = params[:device_type]
    @location = params[:location]
    if @type.blank?
    if @location.blank?
    @devices = Device.all
    else
    @devices = get_devices_by_location(@location)
    end
    else
    if @location.blank?
    @devices = Device.where('device_type_id=?', @type)
    else
    @devices = get_devices_by_type_and_location(@type, @location)
    end
    end
    respond_to do |format|
    format.pdf do
    pdf = WickedPdf.new.pdf_from_string(
    render_to_string(
    template: 'qr_codes/show.html.erb',
    layout: 'layouts/pdf_layout.pdf.erb',
    page_size: @paper_size
    ),
    )
    send_data pdf, :filename =>'PDF Report-' + Time.now.strftime('%v %H:%M:%S').to_s, disposition: 'attachment', :type => "application/pdf"
    end
    end
    end


    in console:



        Started GET "/qr_codes/download_pdf_path?utf8=%E2%9C%93&location=&device_type=&width=&height=&column_number=3&paper_size=A4&label_size=&format=pdf&commit=Create%20PDF%20Document" for 127.0.0.1 at 2018-11-14 20:01:04 -0500
    Processing by QrCodesController#download_pdf as PDF
    Parameters: {"utf8"=>"✓", "location"=>"", "device_type"=>"", "width"=>"", "height"=>"", "column_number"=>"3", "paper_size"=>"A4", "label_size"=>"", "commit"=>"Create PDF Document"}
    Rendering qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb
    (0.3ms) SELECT COUNT(*) FROM "devices"
    Device Load (1.2ms) SELECT "devices".* FROM "devices"
    Rendered qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb (453.5ms)
    "***************["/Users/joe/.rbenv/versions/2.5.0/bin/wkhtmltopdf", "-q", "file:////var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf20181114-912-1ym4a9q.html", "/var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf_generated_file20181114-912-edkha0.pdf"]***************"
    Rendering text template
    Rendered text template (0.1ms)
    Sent data PDF Report-14-NOV-2018 20:01:07 (1.6ms)
    Completed 200 OK in 2682ms (Views: 1.1ms | ActiveRecord: 1.5ms)









    share|improve this question



























      0












      0








      0







      I noticed a bug with my view where my form could not be submitted after the initial submission to generate a PDF, and during research saw that form_with was the recommended way to build forms going forward with rails. I updated my form, and everything seems to be working the way it's supposed to, but now the PDF doesn't download as before and just seems to render the string in a response without generating the file. Using Wicked-PDF and Rails 5.2.1. Sorry if I'm missing something super obvious!



      Using form_tag (pdf downloads as expected):



      form in view:



      <%= form_tag("download_pdf", format: :pdf, method: "get") do %>
      <div class="input-group mb-3">
      <%= collection_select(:location, :id, Location.all, :id, :name, {:include_blank => 'Filter by location'}, {:id => 'qr_code_loc_select', :selected_value => '', :name => 'location', :style=> 'width: 17em', :autocomplete => 'off'}) %>
      </div>
      <div class="input-group mb-3">
      <%= collection_select(:name, :id, DeviceType.all, :id, :name, {:include_blank => 'Filter by device type'}, {:id => 'qr_device_type_select', :selected_value => '', :name => "device_type", :style=> 'width: 17em', :autocomplete => 'off'}) %>
      </div>
      <div class="input-group mb-3">
      <input type="number" name="width" class="form-control label_size_input" id="label_width" step="0.001" placeholder="Label Width" autocomplete ='off' aria-describedby="basic-addon3">
      <div class="input-group-append">
      <span class="input-group-text">inches</span>
      </div>
      </div>
      <div class="input-group mb-3">
      <input type="number" name="height" class="form-control label_size_input" id="label_height" step="0.001" placeholder="Label Height" autocomplete ='off' aria-describedby="basic-addon3">
      <div class="input-group-append">
      <span class="input-group-text">inches</span>
      </div>
      </div>
      <%= label_tag "qr_col", "Columns:", class:"ml-2 text-light" %>
      <div class="input-group mb-3">
      <%= select_tag "qr_col", options_for_select(["1","2", "3", "4", "5"], "3"), {:autocomplete => 'off'}%>
      </div>
      <%= label_tag "paper_size", "Paper Size:", class:"ml-2 text-light" %>
      <div class="input-group mb-3">
      <%= select_tag "paper_size", options_for_select(@paper_size, "A4"), {:autocomplete => 'off'}%>
      </div>
      <div class="btn-group mb-3" role="group" aria-label="pdf_export_button" id="pdf_export">
      <%= hidden_field_tag :column_number %>
      <%= hidden_field_tag :label_size %>
      <%= hidden_field_tag :format, "pdf" %>
      <%= submit_tag("Create PDF Document", {:class=> "btn btn-secondary"}) %>
      <% end %>
      </div>


      in controller:



      def download_pdf
      @columns = params[:column_number].to_i
      @height = params[:height]
      @width = params[:width]
      @paper_size = params[:paper_size]
      @type = params[:device_type]
      @location = params[:location]
      if @type.blank?
      if @location.blank?
      @devices = Device.all
      else
      @devices = get_devices_by_location(@location)
      end
      else
      if @location.blank?
      @devices = Device.where('device_type_id=?', @type)
      else
      @devices = get_devices_by_type_and_location(@type, @location)
      end
      end
      pdf_string = render_to_string(
      template: "qr_codes/show.html.erb",
      layout: "layouts/pdf_layout.pdf.erb",
      viewport_size: '1280x1024',
      page_size: @paper_size
      )
      respond_to do |format|
      format.pdf do
      pdf = WickedPdf.new.pdf_from_string(pdf_string)
      send_data pdf, :filename => "report.pdf", :type => "application/pdf"
      end
      end
      end


      in console:



          Started GET "/qr_codes/download_pdf?utf8=%E2%9C%93&location=&device_type=&width=&height=&qr_col=3&paper_size=A4&column_number=3&label_size=&format=pdf&commit=Create+PDF+Document" for 127.0.0.1 at 2018-11-14 20:03:51 -0500
      Processing by QrCodesController#download_pdf as PDF
      Parameters: {"utf8"=>"✓", "location"=>"", "device_type"=>"", "width"=>"", "height"=>"", "qr_col"=>"3", "paper_size"=>"A4", "column_number"=>"3", "label_size"=>"", "commit"=>"Create PDF Document"}
      Rendering qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb
      (0.4ms) SELECT COUNT(*) FROM "devices"
      Device Load (0.6ms) SELECT "devices".* FROM "devices"
      Rendered qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb (778.0ms)
      "***************["/Users/joe/.rbenv/versions/2.5.0/bin/wkhtmltopdf", "-q", "file:////var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf20181114-912-1opkhpt.html", "/var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf_generated_file20181114-912-m57i12.pdf"]***************"
      Rendering text template
      Rendered text template (0.1ms)
      Sent data report.pdf (1.7ms)
      Completed 200 OK in 3077ms (Views: 1.2ms | ActiveRecord: 1.0ms)


      Using form_with (pdf does not generate as expected and only has an unformatted string in response):



      form in view:



       <%= form_with url: download_pdf_path(format: :pdf), method: "get" do |f| %>
      <div class="input-group mb-3">
      <%= f.collection_select(:id, Location.all, :id, :name, {:include_blank => 'Filter by location'}, {:id => 'qr_code_loc_select', :selected_value => '', :name => 'location', :style=> 'width: 17em', :autocomplete => 'off'}) %>
      </div>
      <div class="input-group mb-3">
      <%= f.collection_select(:id, DeviceType.all, :id, :name, {:include_blank => 'Filter by device type'}, {:id => 'qr_device_type_select', :selected_value => '', :name => "device_type", :style=> 'width: 17em', :autocomplete => 'off'}) %>
      </div>
      <div class="input-group mb-3">
      <%= f.number_field nil, {:name => "width", :id => "label_width", :class => "form-control label_size_input", :step => "0.001", :placeholder => "Label Width", :autocomplete => 'off'} %>
      <div class="input-group-append">
      <span class="input-group-text">inches</span>
      </div>
      </div>
      <div class="input-group mb-3">
      <%= f.number_field nil, {:name => "height", :id => "label_height", :class => "form-control label_size_input", :step => "0.001", :placeholder => "Label Height", :autocomplete => 'off'} %>
      <div class="input-group-append">
      <span class="input-group-text">inches</span>
      </div>
      </div>
      <%= label_tag "qr_col", "Columns:", class:"ml-2 text-light" %>
      <div class="input-group mb-3">
      <%= f.select "column_number", options_for_select(["1","2", "3", "4", "5"], "3"), {:autocomplete => 'off'}, :id => "qr_col"%>
      </div>
      <%= label_tag "paper_size", "Paper Size:", class:"ml-2 text-light" %>
      <div class="input-group mb-3">
      <%= f.select "paper_size", options_for_select(@paper_size, "A4"), {:autocomplete => 'off'}%>
      </div>
      <div class="btn-group mb-3" role="group" aria-label="pdf_export_button" id="pdf_export">
      <%= f.hidden_field :label_size %>
      <%= f.submit("Create PDF Document", {:class=> "btn btn-secondary", :data => { turbolinks: false }}) %>
      </div>
      <% end %>


      controller:



      def download_pdf
      @columns = params[:column_number].to_i
      @height = params[:height]
      @width = params[:width]
      @paper_size = params[:paper_size]
      @type = params[:device_type]
      @location = params[:location]
      if @type.blank?
      if @location.blank?
      @devices = Device.all
      else
      @devices = get_devices_by_location(@location)
      end
      else
      if @location.blank?
      @devices = Device.where('device_type_id=?', @type)
      else
      @devices = get_devices_by_type_and_location(@type, @location)
      end
      end
      respond_to do |format|
      format.pdf do
      pdf = WickedPdf.new.pdf_from_string(
      render_to_string(
      template: 'qr_codes/show.html.erb',
      layout: 'layouts/pdf_layout.pdf.erb',
      page_size: @paper_size
      ),
      )
      send_data pdf, :filename =>'PDF Report-' + Time.now.strftime('%v %H:%M:%S').to_s, disposition: 'attachment', :type => "application/pdf"
      end
      end
      end


      in console:



          Started GET "/qr_codes/download_pdf_path?utf8=%E2%9C%93&location=&device_type=&width=&height=&column_number=3&paper_size=A4&label_size=&format=pdf&commit=Create%20PDF%20Document" for 127.0.0.1 at 2018-11-14 20:01:04 -0500
      Processing by QrCodesController#download_pdf as PDF
      Parameters: {"utf8"=>"✓", "location"=>"", "device_type"=>"", "width"=>"", "height"=>"", "column_number"=>"3", "paper_size"=>"A4", "label_size"=>"", "commit"=>"Create PDF Document"}
      Rendering qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb
      (0.3ms) SELECT COUNT(*) FROM "devices"
      Device Load (1.2ms) SELECT "devices".* FROM "devices"
      Rendered qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb (453.5ms)
      "***************["/Users/joe/.rbenv/versions/2.5.0/bin/wkhtmltopdf", "-q", "file:////var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf20181114-912-1ym4a9q.html", "/var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf_generated_file20181114-912-edkha0.pdf"]***************"
      Rendering text template
      Rendered text template (0.1ms)
      Sent data PDF Report-14-NOV-2018 20:01:07 (1.6ms)
      Completed 200 OK in 2682ms (Views: 1.1ms | ActiveRecord: 1.5ms)









      share|improve this question















      I noticed a bug with my view where my form could not be submitted after the initial submission to generate a PDF, and during research saw that form_with was the recommended way to build forms going forward with rails. I updated my form, and everything seems to be working the way it's supposed to, but now the PDF doesn't download as before and just seems to render the string in a response without generating the file. Using Wicked-PDF and Rails 5.2.1. Sorry if I'm missing something super obvious!



      Using form_tag (pdf downloads as expected):



      form in view:



      <%= form_tag("download_pdf", format: :pdf, method: "get") do %>
      <div class="input-group mb-3">
      <%= collection_select(:location, :id, Location.all, :id, :name, {:include_blank => 'Filter by location'}, {:id => 'qr_code_loc_select', :selected_value => '', :name => 'location', :style=> 'width: 17em', :autocomplete => 'off'}) %>
      </div>
      <div class="input-group mb-3">
      <%= collection_select(:name, :id, DeviceType.all, :id, :name, {:include_blank => 'Filter by device type'}, {:id => 'qr_device_type_select', :selected_value => '', :name => "device_type", :style=> 'width: 17em', :autocomplete => 'off'}) %>
      </div>
      <div class="input-group mb-3">
      <input type="number" name="width" class="form-control label_size_input" id="label_width" step="0.001" placeholder="Label Width" autocomplete ='off' aria-describedby="basic-addon3">
      <div class="input-group-append">
      <span class="input-group-text">inches</span>
      </div>
      </div>
      <div class="input-group mb-3">
      <input type="number" name="height" class="form-control label_size_input" id="label_height" step="0.001" placeholder="Label Height" autocomplete ='off' aria-describedby="basic-addon3">
      <div class="input-group-append">
      <span class="input-group-text">inches</span>
      </div>
      </div>
      <%= label_tag "qr_col", "Columns:", class:"ml-2 text-light" %>
      <div class="input-group mb-3">
      <%= select_tag "qr_col", options_for_select(["1","2", "3", "4", "5"], "3"), {:autocomplete => 'off'}%>
      </div>
      <%= label_tag "paper_size", "Paper Size:", class:"ml-2 text-light" %>
      <div class="input-group mb-3">
      <%= select_tag "paper_size", options_for_select(@paper_size, "A4"), {:autocomplete => 'off'}%>
      </div>
      <div class="btn-group mb-3" role="group" aria-label="pdf_export_button" id="pdf_export">
      <%= hidden_field_tag :column_number %>
      <%= hidden_field_tag :label_size %>
      <%= hidden_field_tag :format, "pdf" %>
      <%= submit_tag("Create PDF Document", {:class=> "btn btn-secondary"}) %>
      <% end %>
      </div>


      in controller:



      def download_pdf
      @columns = params[:column_number].to_i
      @height = params[:height]
      @width = params[:width]
      @paper_size = params[:paper_size]
      @type = params[:device_type]
      @location = params[:location]
      if @type.blank?
      if @location.blank?
      @devices = Device.all
      else
      @devices = get_devices_by_location(@location)
      end
      else
      if @location.blank?
      @devices = Device.where('device_type_id=?', @type)
      else
      @devices = get_devices_by_type_and_location(@type, @location)
      end
      end
      pdf_string = render_to_string(
      template: "qr_codes/show.html.erb",
      layout: "layouts/pdf_layout.pdf.erb",
      viewport_size: '1280x1024',
      page_size: @paper_size
      )
      respond_to do |format|
      format.pdf do
      pdf = WickedPdf.new.pdf_from_string(pdf_string)
      send_data pdf, :filename => "report.pdf", :type => "application/pdf"
      end
      end
      end


      in console:



          Started GET "/qr_codes/download_pdf?utf8=%E2%9C%93&location=&device_type=&width=&height=&qr_col=3&paper_size=A4&column_number=3&label_size=&format=pdf&commit=Create+PDF+Document" for 127.0.0.1 at 2018-11-14 20:03:51 -0500
      Processing by QrCodesController#download_pdf as PDF
      Parameters: {"utf8"=>"✓", "location"=>"", "device_type"=>"", "width"=>"", "height"=>"", "qr_col"=>"3", "paper_size"=>"A4", "column_number"=>"3", "label_size"=>"", "commit"=>"Create PDF Document"}
      Rendering qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb
      (0.4ms) SELECT COUNT(*) FROM "devices"
      Device Load (0.6ms) SELECT "devices".* FROM "devices"
      Rendered qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb (778.0ms)
      "***************["/Users/joe/.rbenv/versions/2.5.0/bin/wkhtmltopdf", "-q", "file:////var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf20181114-912-1opkhpt.html", "/var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf_generated_file20181114-912-m57i12.pdf"]***************"
      Rendering text template
      Rendered text template (0.1ms)
      Sent data report.pdf (1.7ms)
      Completed 200 OK in 3077ms (Views: 1.2ms | ActiveRecord: 1.0ms)


      Using form_with (pdf does not generate as expected and only has an unformatted string in response):



      form in view:



       <%= form_with url: download_pdf_path(format: :pdf), method: "get" do |f| %>
      <div class="input-group mb-3">
      <%= f.collection_select(:id, Location.all, :id, :name, {:include_blank => 'Filter by location'}, {:id => 'qr_code_loc_select', :selected_value => '', :name => 'location', :style=> 'width: 17em', :autocomplete => 'off'}) %>
      </div>
      <div class="input-group mb-3">
      <%= f.collection_select(:id, DeviceType.all, :id, :name, {:include_blank => 'Filter by device type'}, {:id => 'qr_device_type_select', :selected_value => '', :name => "device_type", :style=> 'width: 17em', :autocomplete => 'off'}) %>
      </div>
      <div class="input-group mb-3">
      <%= f.number_field nil, {:name => "width", :id => "label_width", :class => "form-control label_size_input", :step => "0.001", :placeholder => "Label Width", :autocomplete => 'off'} %>
      <div class="input-group-append">
      <span class="input-group-text">inches</span>
      </div>
      </div>
      <div class="input-group mb-3">
      <%= f.number_field nil, {:name => "height", :id => "label_height", :class => "form-control label_size_input", :step => "0.001", :placeholder => "Label Height", :autocomplete => 'off'} %>
      <div class="input-group-append">
      <span class="input-group-text">inches</span>
      </div>
      </div>
      <%= label_tag "qr_col", "Columns:", class:"ml-2 text-light" %>
      <div class="input-group mb-3">
      <%= f.select "column_number", options_for_select(["1","2", "3", "4", "5"], "3"), {:autocomplete => 'off'}, :id => "qr_col"%>
      </div>
      <%= label_tag "paper_size", "Paper Size:", class:"ml-2 text-light" %>
      <div class="input-group mb-3">
      <%= f.select "paper_size", options_for_select(@paper_size, "A4"), {:autocomplete => 'off'}%>
      </div>
      <div class="btn-group mb-3" role="group" aria-label="pdf_export_button" id="pdf_export">
      <%= f.hidden_field :label_size %>
      <%= f.submit("Create PDF Document", {:class=> "btn btn-secondary", :data => { turbolinks: false }}) %>
      </div>
      <% end %>


      controller:



      def download_pdf
      @columns = params[:column_number].to_i
      @height = params[:height]
      @width = params[:width]
      @paper_size = params[:paper_size]
      @type = params[:device_type]
      @location = params[:location]
      if @type.blank?
      if @location.blank?
      @devices = Device.all
      else
      @devices = get_devices_by_location(@location)
      end
      else
      if @location.blank?
      @devices = Device.where('device_type_id=?', @type)
      else
      @devices = get_devices_by_type_and_location(@type, @location)
      end
      end
      respond_to do |format|
      format.pdf do
      pdf = WickedPdf.new.pdf_from_string(
      render_to_string(
      template: 'qr_codes/show.html.erb',
      layout: 'layouts/pdf_layout.pdf.erb',
      page_size: @paper_size
      ),
      )
      send_data pdf, :filename =>'PDF Report-' + Time.now.strftime('%v %H:%M:%S').to_s, disposition: 'attachment', :type => "application/pdf"
      end
      end
      end


      in console:



          Started GET "/qr_codes/download_pdf_path?utf8=%E2%9C%93&location=&device_type=&width=&height=&column_number=3&paper_size=A4&label_size=&format=pdf&commit=Create%20PDF%20Document" for 127.0.0.1 at 2018-11-14 20:01:04 -0500
      Processing by QrCodesController#download_pdf as PDF
      Parameters: {"utf8"=>"✓", "location"=>"", "device_type"=>"", "width"=>"", "height"=>"", "column_number"=>"3", "paper_size"=>"A4", "label_size"=>"", "commit"=>"Create PDF Document"}
      Rendering qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb
      (0.3ms) SELECT COUNT(*) FROM "devices"
      Device Load (1.2ms) SELECT "devices".* FROM "devices"
      Rendered qr_codes/show.html.erb within layouts/pdf_layout.pdf.erb (453.5ms)
      "***************["/Users/joe/.rbenv/versions/2.5.0/bin/wkhtmltopdf", "-q", "file:////var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf20181114-912-1ym4a9q.html", "/var/folders/pf/kl12j8g91w5bj7ssc_0fdv3c0000gn/T/wicked_pdf_generated_file20181114-912-edkha0.pdf"]***************"
      Rendering text template
      Rendered text template (0.1ms)
      Sent data PDF Report-14-NOV-2018 20:01:07 (1.6ms)
      Completed 200 OK in 2682ms (Views: 1.1ms | ActiveRecord: 1.5ms)






      pdf ruby-on-rails-5 wkhtmltopdf wicked-pdf






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 15 '18 at 1:23







      Joe Jensen

















      asked Nov 15 '18 at 1:09









      Joe JensenJoe Jensen

      133




      133
























          1 Answer
          1






          active

          oldest

          votes


















          1














          IT WAS SOMETHING DUMB--decided to turn my attention to the form_with documentation and found out that remote: true is set by default. If you set this to local: true, the issue is resolved. Hope that helps someone else!






          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53311045%2fwicked-pdf-does-not-download-when-i-switch-to-using-form-with-instead-of-form-ta%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            IT WAS SOMETHING DUMB--decided to turn my attention to the form_with documentation and found out that remote: true is set by default. If you set this to local: true, the issue is resolved. Hope that helps someone else!






            share|improve this answer


























              1














              IT WAS SOMETHING DUMB--decided to turn my attention to the form_with documentation and found out that remote: true is set by default. If you set this to local: true, the issue is resolved. Hope that helps someone else!






              share|improve this answer
























                1












                1








                1






                IT WAS SOMETHING DUMB--decided to turn my attention to the form_with documentation and found out that remote: true is set by default. If you set this to local: true, the issue is resolved. Hope that helps someone else!






                share|improve this answer












                IT WAS SOMETHING DUMB--decided to turn my attention to the form_with documentation and found out that remote: true is set by default. If you set this to local: true, the issue is resolved. Hope that helps someone else!







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 15 '18 at 1:46









                Joe JensenJoe Jensen

                133




                133






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53311045%2fwicked-pdf-does-not-download-when-i-switch-to-using-form-with-instead-of-form-ta%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Guess what letter conforming each word

                    Port of Spain

                    Run scheduled task as local user group (not BUILTIN)