ActionController :: UnknownFormat滑轨5控制器

时间:2018-08-21 14:14:34

标签: ruby-on-rails ruby ruby-on-rails-5

编辑#1

查看订单/展示,我还没有添加发票,但是该视图可以使用或不使用发票链接,对吗?

<section class="pt-4 px-8 animated">
  <section class="flex flex-wrap justify-between">
    <h3 class="font-normal text-grey-dark mb-4 py-2">Order Information</h3>
    <%= render 'layouts/dashboard/account' %>
  </section>

  <h2 class="text-grey-darkest text-lg no-underline py-4">
    Course: <%= @order.course.title %>
  </h2>

  <section class="py-2">
    <p class="text-grey-darkest text-md pb-4"><%= @order.course.description %></p>

  <p class="text-grey-darkest text-md">
    <b>Course Price:</b>
    £<%= @order.course.price %>
  </p>

  <p class="text-grey-darkest text-md">
    <b>Total Price:</b>
    £<%= @order.amount %>
  </p>
  </section>

  <section class="text-grey-darkest pt-4">
    <h4 class="pb-2">User details</h4>
    <p>Name: <%= current_user.full_name %></p>
    <p>Email: <%= current_user.email %></p>
  </section>
</section>

原始问题

我的控制器出现ActionController::UnknownFormat错误

class OrdersController < ApplicationController
  layout proc { user_signed_in? ? "dashboard" : "application" }

  before_action :authenticate_user!

  def index
    @orders = Order.includes(:course).all
  end

  def show
    @order = Order.find(params[:id])

    respond_to do |format|
      format.pdf {
        send_data @order.receipt.render,
        filename: "#{@order.created_at.strftime("%Y-%m-%d")}-aurameir-courses-receipt.pdf",
        type: "application/pdf",
        disposition: :inline
      }
    end
  end

  def create
  end

  def destroy
  end
end

我正在使用prawn的{​​{3}}宝石,但是不确定为什么会出现错误。

1 个答案:

答案 0 :(得分:0)

由于html格式是Rails的默认格式,因此您需要在URL或链接生成器中显式提供pdf格式:

localhost:3000/orders/1.pdf

否则,它将尝试将其加载为localhost:3000/orders/1.html,但是您尚未在控制器中定义format.html处理程序。

在应用程序中实现链接时,请遵循docs中的示例:

<%= link_to "Download Receipt", charge_path(@charge, format: :pdf) %>