Rails 4 form_tag返回PDF格式(虾)



我想有一个返回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!我在标题(method: :get之前)和submit标签附近尝试了format: :pdf的变化,但没有任何作用。有人能给我指个正确的方向吗?我真的很感谢你的帮助,SO社区!

就像这样添加一个隐藏字段:

<%= hidden_field_tag :format, :pdf %>

它工作!

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

由于大多数Rails路由以.:format结束,因此您可以将此参数添加到路由helper调用中。如:

…_path(format: :pdf)

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

最新更新