показать запись на wicked_pdf на ruby на рельсах 5? - PullRequest
0 голосов
/ 30 января 2020

Так что я хотел показать в PDF-файл только что выбранную запись. Теперь я получаю все записи или только первый, когда ищу localhost:3000/service_orders.pdf. При нажатии на кнопку «печать», когда они просто дают ошибку, что-то ссылку на это.

ServiceOrdersController#show is missing a template for this request format and variant.

Мой file.pdf.erb:

<%  @service_order ||= ServiceOrder.find(params[:id]) do |service_order| %>
    <td> <%= service_order.number %> </td> ...
    %< end %>

Контроллер моих заказов на обслуживание:

     def index
        @service_orders = ServiceOrder::Collector.call(params: params.permit!.to_h)
        respond_to do |format|
          format.html
          format.json
          format.pdf {render :pdf => "service_orders/file",
          :template => '/file', formats: :html, encoding: 'utf8'}
        end
      end
    ...
    ...
   def show
     @service_order = ServiceOrder.find(params[:id])
   end

Показана моя кнопка ссылки. html. erb

<%= link_to 'Print', service_order_path(@service_order, :format => :pdf),:format => :pdf,  class:"button-show "%>

И, конечно, мой файл mimi_types.rb включает Mime::Type.register "application/pdf", :pdf

Я искал inte rnet, и самым близким было это. Надеюсь у кого-то была такая же проблема.

1 Ответ

0 голосов
/ 30 января 2020

Вы не указываете формат в show действии, поэтому по умолчанию он пытается отобразить html шаблон. Вы должны добавить:

   def show
     @service_order = ServiceOrder.find(params[:id])
     respond_to do |format|
          format.html
          format.json
          format.pdf do 
            render pdf: "name_of_template",
            some other options
          end
        end
   end

и найти шаблон для этого действия в views/service_orders/show.pdf.erb

...