我想有一个返回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符号。他们有一个非常清晰的教程