button_to呈现pdf格式

时间:2015-10-27 08:29:50

标签: ruby-on-rails button-to

在我的控制器中我有动作:

def booking_sheet_report
  @groups = Group.all.order('priority DESC')
  respond_to do |format|
    format.html
    format.csv
    format.pdf
  end
end

并且在视图中我希望用户能够在单击button_to元素时打开(下载)format.pdf(我有一个booking_sheet_report.pdf.erb视图)。使用link_to(<%= link_to 'PDF', booking_sheet_report_path(format: :pdf) %>)可以正常工作。

我尝试了以下但没有成功:

<%= button_to "PDF", {action: "booking_sheet_report",  :form => { "data-type" => "pdf" }}, {class: 'btn-u', method: :get} %>


<%= button_to "PDF", {action: "booking_sheet_report(format: :pdf)",  :form => { "data-type" => "pdf" }}, {class: 'btn-u', method: :get} %>

第二个错误:No route matches {:action=>"booking_sheet_report(format: :pdf)", :controller=>"reports", :form=>{"data-type"=>"pdf"}}

有任何线索可能或我做错了什么?

编辑:一条相关路线为get 'booking_sheet_report' => 'reports#booking_sheet_report'

1 个答案:

答案 0 :(得分:1)

  

没有路线匹配{:action =&gt;“booking_sheet_report(format :: pdf)”,   :controller =&gt;“reports”,:form =&gt; {“data-type”=&gt;“pdf”}}

<%= button_to "PDF", {action: "booking_sheet_report(format: :pdf)",  :form => { "data-type" => "pdf" }}, {class: 'btn-u', method: :get} %>

上面代码的问题是您在错误的一侧关闭括号(})。我的意思是:action =>的右括号放在错误的一边。所以它将整个事情视为 url选项 ,并将其报告为无路由错误。使用括号也总是很棘手。

  

button_to(name = nil,options = nil,html_options = nil,&amp; block)   公共

以下内容应该有效

<%= button_to "PDF", booking_sheet_report_path(format: :pdf), class: 'btn-u', method: :get, :form => {"data-type" => "pdf" } %>