Form_with, используя диапазон, вывести pdf, получить вместо сообщения Ruby на Rails - PullRequest
0 голосов
/ 06 августа 2020

Мои пользователи могут добавить в инвентарь, а затем распечатать весь инвентарь в ярлыки, используя PDF. Эта часть работает, теперь мне нужно создать форму, чтобы получить диапазон элементов для печати. Параметры приходят, и все мои переменные верны, когда я проверяю их с помощью byebug. Первая проблема заключается в том, что моя форма хочет опубликовать вместо получения

Нет совпадений маршрута [POST] "/excute_print_tags.pdf". Теперь, если я добавляю маршрут, код запускается, а вывода нет, и я получаю это в командной строке

  Inventory Load (0.4ms)  SELECT "inventories".* FROM "inventories" WHERE "inventories"."user_id" = $1 AND "inventories"."print_ref" >= $2 AND "inventories"."print_ref" < $3  [["user_id", 1], ["print_ref", 4], ["print_ref", 7]]
  ↳ app/pdfs/inventory_landscape_pdf.rb:18:in `inventory_number'
  Rendering text template
  Rendered text template (Duration: 0.0ms | Allocations: 2)
Sent data Westcoast Board and Ski_myskiswapinvenotry2020-08-05 14:51:40 -0700.pdf (0.9ms)
Completed 200 OK in 65227ms (Views: 0.6ms | ActiveRecord: 8.6ms | Allocations: 220205)

код формы внутри views / inventory / print_tags. html .erb

<%= form_with url: excute_print_tags_path(format: "pdf") do |form| %>
  <div class="flex flex-wrap -mx-3 mb-2">
    <div class="w-full md:w-1/3 px-3 mb-6 md:mb-0">
      <div class="form-group">
        <%= form.label :print_ref1 %>
        <%= form.number_field :print_ref1, class: "form-control" %>
    </div>
    </div>
    <div class="w-full md:w-1/3 px-3 mb-6 md:mb-0">
      <div class="form-group">
        <%= form.label :print_ref2  %>
        <%= form.number_field :print_ref2, class: "form-control" %>
      </div>
    </div>
    <div class="w-full md:w-1/3 px-3 md:mb-0 mt-8 ">
      <div class="form-group">
        <%= form.button class: "btn btn-primary" %>
      </div>
    </div>
  </div>
 <% end %>

Затем внутри controllers / inventory_contoller

 def excute_print_tags
    @print_ref1 = params[:print_ref1]
    @print_ref2 = params[:print_ref2]
    
    @filtered_inventory = @user_inventory.where(print_ref:  @print_ref1...@print_ref2)
    byebug
    respond_to do |format|
      format.html
      format.pdf do
        pdf = InventoryLandscapePdf.new(@filtered_inventory)
        send_data pdf.render, filename: "#{current_user.company}_myskiswapinvenotry#{Time.new}.pdf",
                              type: "application/pdf",
                              disposition: "inline"
      end
    end

  end

У меня также есть попытался добавить приведенный выше код в раздел print_tags инвентаризации и позвонить самому себе. Та же проблема ... Я думаю, это как-то связано с тем, как устроены мои формы, и позволяет отправлять их только как сообщение, а не как получение, технически это просто поиск, верно? Я попытался найти то, что нашел, но это тоже не решило эту проблему. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 08 августа 2020

Мне пришлось изменить эту строку

<%= form_with url: excute_print_tags_path(format: "pdf") do |form| %> 

На эту строку

<%= form_with url: excute_print_tags_path(format: "pdf"), local: true, method: :get do |form| %>

Спасибо Les за вашу помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...