在我的Rails 4.2应用中,我有一个index
操作列出了所有用户的发票,按网址中的搜索参数进行过滤:
class InvoicesController < ApplicationController
def index
@invoices = current_user.invoices.search(params)
respond_to do |format|
format.html do
@title = "Invoices"
...
end
format.csv do
headers['Content-Disposition'] = "attachment; filename=\"#{invoices_filename}.csv\""
end
format.xls do
headers['Content-Disposition'] = "attachment; filename=\"#{invoices_filename}.xls\""
end
end
end
...
end
这很好用。用户可以通过各种参数过滤发票,列出的发票也会相应调整。
当用户想要以XLS或CSV格式下载这些确切的发票时,问题就开始了。我在index.html.erb
上有一个链接:
<%= link_to "Download invoices", invoices_path(:format => "xls") %>
但是,它会下载所有发票,而不仅仅是用户之前过滤掉的发票。
有没有办法将搜索参数传递给下一个动作,或者可能是一个更优雅的解决方案?
感谢您的帮助。
答案 0 :(得分:4)
您只需要发送参数以及format
这样可以解决问题:
<%= link_to "Download invoices", invoices_path(params.merge(format: :xls)) %>