我有一个搜索范围很好的搜索表单,我想为用户添加一个导出,将结果集的内容发送到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方法有关?任何帮助都会很棒。
谢谢!
答案 0 :(得分:3)
我知道这是一个黑客,在花了好几个小时没得到它之后,我还是用它了。
<a href="/expenses.xls?<%= request.fullpath.split("?")[1] %>">make xls</a>
所以基本上它需要在?之后的搜索路径,然后将它添加到你的model.xls输出路径然后它的工作原理。我自己讨厌,必须有更好的方法,但最后期限。
这里有一个很好的link。
答案 1 :(得分:0)
Ronin为this 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")) %>