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} %>

2番目のものはエラーを出します:No route matches {:action=>"booking_sheet_report(format: :pdf)", :controller=>"reports", :form=>{"data-type"=>"pdf"}}

これがどのように可能であるか、または私が間違っていることについての手がかりはありますか?

編集:関連するルートの1つはget 'booking_sheet_report' => 'reports#booking_sheet_report'

4

1 に答える 1

2

ルートが一致しません

<%= 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) public

以下は動作するはずです

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