<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>087796</title>
    <link>https://ruby-china.org/087796</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>想把 Ransack 搜索结果导出到 Excel，但每次导出的却是该 model 的全部数据</title>
      <description>&lt;p&gt;问题描述：把搜索结果到 excel、csv，能够生成 excel，但 excel 中的数据不是搜索到的结果数据，而是该 model 的全部数据。百思不得其解...困扰两天了，请教各位。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;开发环境：rails3.2.3，ruby1.9.3; &lt;/li&gt;
&lt;li&gt;使用 to_xls gem 导出 excel；使用 ransack gem 实现搜索；前端使用 bootstrap-sass gem；ransack 能正确返回搜索结果；能导出 excel，说明 to_xls 也运行正常。&lt;/li&gt;
&lt;li&gt;code： &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;controller： 
def index 
&lt;a href="/search" class="user-mention" title="@search"&gt;&lt;i&gt;@&lt;/i&gt;search&lt;/a&gt; = Project.search(params[:q]) 
&lt;a href="/projects" class="user-mention" title="@projects"&gt;&lt;i&gt;@&lt;/i&gt;projects&lt;/a&gt; = params[:distinct].to_i.zero? ? &lt;a href="/search.result" class="user-mention" title="@search.result"&gt;&lt;i&gt;@&lt;/i&gt;search.result&lt;/a&gt; : &lt;a href="/search.result" class="user-mention" title="@search.result"&gt;&lt;i&gt;@&lt;/i&gt;search.result&lt;/a&gt;(distinct: true)
 respond_to do |format| 
format.html # index.html.erb 
format.json { render json: &lt;a href="/projects" class="user-mention" title="@projects"&gt;&lt;i&gt;@&lt;/i&gt;projects&lt;/a&gt; } 
format.xls { send_data &lt;a href="/projects.to_xls" class="user-mention" title="@projects.to_xls"&gt;&lt;i&gt;@&lt;/i&gt;projects.to_xls&lt;/a&gt;, filename: 'results.xls' } 
end 
end &lt;/p&gt;

&lt;p&gt;viewer： 
(1)index.html.erb&lt;/p&gt; 
&amp;lt;%= search_form_for([:admin, &lt;a href="/search" class="user-mention" title="@search"&gt;&lt;i&gt;@&lt;/i&gt;search&lt;/a&gt;], :html =&amp;gt; { :class =&amp;gt; "form-horizontal"} ) do |f| %&amp;gt;

&lt;p&gt;&amp;lt;%= f.label :number_cont,'项目编号' %&amp;gt; 
&amp;lt;%= f.text_field :number_cont %&amp;gt; &lt;/p&gt;

&lt;p&gt;&amp;lt;%= f.label :title_cont, '项目名称包含...' %&amp;gt; 
&amp;lt;%= f.text_field :title_cont %&amp;gt; &lt;/p&gt;

&lt;p class="button actions"&gt;&amp;lt;%= f.submit "Search" %&amp;gt;&lt;/p&gt; 

&lt;p&gt;&amp;lt;% end %&amp;gt; &lt;/p&gt;

 

/下面这两条语句，作为调试，能够正确返回搜索结果/ 
&lt;p&gt;SQL: &amp;lt;%= &lt;a href="/projects.to_sql" class="user-mention" title="@projects.to_sql"&gt;&lt;i&gt;@&lt;/i&gt;projects.to_sql&lt;/a&gt; %&amp;gt;&lt;/p&gt; 
&lt;span&gt;共 &amp;lt;%= &lt;a href="/projects.size" class="user-mention" title="@projects.size"&gt;&lt;i&gt;@&lt;/i&gt;projects.size&lt;/a&gt; %&amp;gt;条记录&lt;/span&gt; 
&lt;br&gt; 

 

&lt;p&gt;&amp;lt;%= render 'results' %&amp;gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
 

&lt;p&gt;(2)_results.html.erb &lt;/p&gt;

 

&amp;lt;% &lt;a href="/projects.each" class="user-mention" title="@projects.each"&gt;&lt;i&gt;@&lt;/i&gt;projects.each&lt;/a&gt; do |project| %&amp;gt; 
 
&amp;lt;% end %&amp;gt; 

&lt;table class="table table-striped table-bordered"&gt; 
&lt;tbody&gt;&lt;tr&gt; 
&lt;th&gt;项目编号&lt;/th&gt; 
&lt;th&gt;项目名称&lt;/th&gt; 
&lt;th&gt;立项年度&lt;/th&gt; 
&lt;th&gt;负责人&lt;/th&gt; 
&lt;th&gt;承担单位&lt;/th&gt; 

&lt;/tr&gt;&lt;tr&gt; 
&lt;td&gt;&amp;lt;%= link_to project.number, admin_project_path(project) %&amp;gt;&lt;/td&gt; 
&lt;td&gt;&amp;lt;%= project.title %&amp;gt;&lt;/td&gt; 
&lt;td&gt;&amp;lt;%= project.approve_date %&amp;gt;&lt;/td&gt; 
&lt;td&gt;&amp;lt;%= project.superintendent %&amp;gt;&lt;/td&gt; 
&lt;td&gt;&amp;lt;%= project.responsibility_unit %&amp;gt;&lt;/td&gt; 
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; 

&lt;p&gt;&amp;lt;%= button_to "导出为 excel", admin_projects_path(:format =&amp;gt; 'xls') %&amp;gt; 
routes.rb 
routes.rbnamespace :admin do |admin| 
resources :projects do 
resources :users 
end &lt;/p&gt;

&lt;p&gt;不知道我遗漏了什么没有。请问：&lt;a href="/projects" class="user-mention" title="@projects"&gt;&lt;i&gt;@&lt;/i&gt;projects&lt;/a&gt;实例变量的确是搜索后的结果，但导出时，却是 Project.all 的全部数据。 
请问，问题出在了哪？解决方案是什么。谢谢。 &lt;/p&gt;</description>
      <author>087796</author>
      <pubDate>Wed, 18 Apr 2012 21:37:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/2696</link>
      <guid>https://ruby-china.org/topics/2696</guid>
    </item>
    <item>
      <title>如何把搜索的结果导出为 csv？</title>
      <description>&lt;p&gt;环境：ruby1.9.3 + rails3.2.3, windows, sqlite3;
使用 meta_search 做基于 model 的组合检索；
现在想把检索结果导出为 csv 文件；看到一个 comma gem，但只能把 model 中的全部记录导出，而不是导出搜索结果。&lt;/p&gt;

&lt;p&gt;google 了很多帖子，都还是没有成功。&lt;/p&gt;

&lt;p&gt;各位，是否有好的解决方案？&lt;/p&gt;

&lt;p&gt;代码很简单：
controller：&lt;/p&gt;

&lt;p&gt;def index
    &lt;a href="/search" class="user-mention" title="@search"&gt;&lt;i&gt;@&lt;/i&gt;search&lt;/a&gt; = Project.search(params[:search])
    &lt;a href="/projects" class="user-mention" title="@projects"&gt;&lt;i&gt;@&lt;/i&gt;projects&lt;/a&gt; = &lt;a href="/search.paginate" class="user-mention" title="@search.paginate"&gt;&lt;i&gt;@&lt;/i&gt;search.paginate&lt;/a&gt;(page: params[:page], per_page: 20)&lt;/p&gt;

&lt;p&gt;我现在就想把&lt;a href="/search" class="user-mention" title="@search"&gt;&lt;i&gt;@&lt;/i&gt;search&lt;/a&gt;导出为 csv，可是在哪里下手呢？没有头绪。&lt;/p&gt;

&lt;p&gt;一点牢骚 + 郁闷：
rails 基本入门以后；学习曲线陡然增大，不知道我这样说对不对，有时感觉一头雾水，分不清东南西北了....。
ruby on rails tutorial、ihower 的 rails 实战圣经、等也都能看懂，跟着流程也能把代码敲下来；但落实到自己独立完成某个功能，还是有点吃力。
.....&lt;/p&gt;</description>
      <author>087796</author>
      <pubDate>Tue, 17 Apr 2012 09:04:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/2645</link>
      <guid>https://ruby-china.org/topics/2645</guid>
    </item>
    <item>
      <title>如何给 form_tag 加 css，rails3？</title>
      <description>&lt;p&gt;请教：如何给 form_tag 定制的 css？说明：rails3.2，使用 twitter bootstrap-sass。form_for 是没有问题的，bootstrap 的效果都有。&lt;/p&gt;

&lt;p&gt;代码如下：&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"span6 offset3 well"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form_tag&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="ss"&gt;:controller&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"admin/projects"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:action&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="ss"&gt;:method&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"get"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;

          &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;label_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"按年度查询:"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
          &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;text_field_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;

          &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;label_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"按编号查询:"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
          &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;text_field_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;

        &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;submit_tag&lt;/span&gt; &lt;span class="s2"&gt;"Search"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:class&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"btn btn-large btn-primary"&lt;/span&gt;  &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 form_tag 上使用了如下，但没有效果：&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form_tag&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="ss"&gt;:controller&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"admin/projects"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:action&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="ss"&gt;:method&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"get"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:class&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"form-inline"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;

 &lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;submit_tag&lt;/span&gt; &lt;span class="s2"&gt;"Search"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:class&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"btn btn-large btn-primary"&lt;/span&gt;  &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;button 的前端展现，调用了 bootstrap。  &lt;/p&gt;</description>
      <author>087796</author>
      <pubDate>Thu, 22 Mar 2012 10:59:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/2052</link>
      <guid>https://ruby-china.org/topics/2052</guid>
    </item>
  </channel>
</rss>
