如何将GET参数传递给Ruby on Rails中的下一个控制器操作?

时间:2016-07-22 14:13:12

标签: ruby-on-rails ruby

在我的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") %>

但是,它会下载所有发票,而不仅仅是用户之前过滤掉的发票。

有没有办法将搜索参数传递给下一个动作,或者可能是一个更优雅的解决方案?

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

您只需要发送参数以及format

这样可以解决问题:

<%= link_to "Download invoices", invoices_path(params.merge(format: :xls)) %>