问题描述:把搜索结果到 excel、csv,能够生成 excel,但 excel 中的数据不是搜索到的结果数据,而是该 model 的全部数据。百思不得其解...困扰两天了,请教各位。
controller: def index @search = Project.search(params[:q]) @projects = params[:distinct].to_i.zero? ? @search.result : @search.result(distinct: true) respond_to do |format| format.html # index.html.erb format.json { render json: @projects } format.xls { send_data @projects.to_xls, filename: 'results.xls' } end end
viewer: (1)index.html.erb
<%= search_form_for([:admin, @search], :html => { :class => "form-horizontal"} ) do |f| %><%= f.label :number_cont,'项目编号' %> <%= f.text_field :number_cont %>
<%= f.label :title_cont, '项目名称包含...' %> <%= f.text_field :title_cont %>
<% end %>
/下面这两条语句,作为调试,能够正确返回搜索结果/SQL: <%= @projects.to_sql %>
共 <%= @projects.size %>条记录<%= render 'results' %>
(2)_results.html.erb
<% @projects.each do |project| %> <% end %>项目编号 | 项目名称 | 立项年度 | 负责人 | 承担单位 |
---|---|---|---|---|
<%= link_to project.number, admin_project_path(project) %> | <%= project.title %> | <%= project.approve_date %> | <%= project.superintendent %> | <%= project.responsibility_unit %> |
<%= button_to "导出为 excel", admin_projects_path(:format => 'xls') %> routes.rb routes.rbnamespace :admin do |admin| resources :projects do resources :users end
不知道我遗漏了什么没有。请问:@projects实例变量的确是搜索后的结果,但导出时,却是 Project.all 的全部数据。 请问,问题出在了哪?解决方案是什么。谢谢。