1

在我的控制器中,我有以下操作:

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'

4

1 回答 1

2

没有路线匹配 {:action=>"booking_sheet_report(format: :pdf)", :controller=>"reports", :form=>{"data-type"=>"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, &block) 公共

以下应该工作

<%= button_to "PDF", booking_sheet_report_path(format: :pdf), class: 'btn-u', method: :get, :form => {"data-type" => "pdf" } %>
于 2015-10-27T09:02:03.087 回答