rails 4 form_tag返回pdf格式(对虾)

时间:2015-07-13 07:07:34

标签: ruby-on-rails ruby-on-rails-4 pdf prawn

我想要一个返回pdf的form_tag。

这是我视图中的form_tag:

<%= form_tag do_some_things_path, method: :get do %>

  <strong>Start date</strong>
  <%= text_field_tag 'start_date', nil, id: 'start_date' %>

  <%= submit_tag 'Do the things' %>

<% end %>

这是我控制器中的操作:

def do_some_things
  @start_date = params[:start_date].to_date
  @stuff = "123"
  respond_to do |format|
    format.html { render :something }
    format.pdf do
      pdf = SomeThingsPdf.new(@stuff)
      send_data pdf.render, filename: Time.zone.today,
                            type: "application/pdf",
                            disposition: "inline"
    end
  end
end

输入日期并单击按钮将返回一个漂亮的html文档。但这不是我想要的 - 我想要一个PDF!我在标题中(format: :pdf之前)和method: :get标记附近尝试了submit的变体,但没有任何效果。有人可以指点我正确的方向吗?我真的很感谢你的帮助,SO社区!

3 个答案:

答案 0 :(得分:6)

只需添加如下隐藏字段:

<%= hidden_field_tag :format, :pdf %>

有效!

答案 1 :(得分:1)

实质上,

form_tag只需要一个正确的路径来提交表单。

由于大多数Rails路由以.:format结尾,因此您只需将此参数添加到路由帮助程序调用中即可。像:

…_path(format: :pdf)

答案 2 :(得分:0)

最近我使用wicked_pdf gem建立了一个类似的网页。它是一个宝石,可以轻松地将HTML呈现为pdf。 然后你的控制器方法可以作为pdf响应,你可以模仿你想呈现的页面的html,但是它上面有一些wicked_pdf符号。他们有一个非常清晰的教程。