Ransack搜索结果 - to_xls?

时间:2013-01-02 18:30:40

标签: ruby-on-rails ransack

我有一个搜索范围很好的搜索表单,我想为用户添加一个导出,将结果集的内容发送到XLS文件。

我也成功地实现了to_xls,但是它给了我正在搜索的对象的最大可能范围,而不是视图中显示的过滤结果。

def index

  @search = Expense.search(params[:q])
  @expense_list = @search.result.sort_by(&:expense_date) 

    respond_to do |format|
      format.html
      format.xml { render :xml => @expense_list }
      format.xls { send_data @expense_list.to_xls, :filename => '123.xls'}
    end

end

是否与ransack如何使用GET方法有关?任何帮助都会很棒。

谢谢!

3 个答案:

答案 0 :(得分:3)

我知道这是一个黑客,在花了好几个小时没得到它之后,我还是用它了。

<a href="/expenses.xls?<%= request.fullpath.split("?")[1]  %>">make xls</a>

所以基本上它需要在?之后的搜索路径,然后将它添加到你的model.xls输出路径然后它的工作原理。我自己讨厌,必须有更好的方法,但最后期限。

这里有一个很好的link

答案 1 :(得分:0)

Roninthis related question, but with CSV instead of XLS提供了一个简单的解决方案。在我的例子中,使用Ronin的答案,我只是重写了使用XLS的链接,如下所示

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

答案 2 :(得分:0)

%= link_to "Download Excel", yours_controller_path(params.merge(format: "xls")) %>