太阳黑子返回模型的所有结果

时间:2012-03-13 18:01:55

标签: ruby-on-rails ruby-on-rails-3 solr sunspot

我的控制器中有这个:

def boards
   @user = User.find_by_slug(params[:id])
     @search = @user.boards.solr_search do |s|
       s.fulltext params[:search]
       s.keywords params[:search]
       s.order_by :created_at, :desc
       s.paginate :page => params[:page], :per_page => 1
     end

   @boards = @search.results
respond_to do |format|
  format.html { render :layout => nil}# panel.html.erb
  format.json { render json: @boards }
  format.js
end
end

在我看来:

<table id="body_object">
 <% for board in @boards %>
  <tr class="attributes">
   <td>
     <%= board.id %>
   </td>
   <td>
     <%= board.name %>
   </td>
   <td>
     <%= board.description  %>
   </td>
  </tr>
 <% end %>
</table>

   <div id="content_pagination">
    <%= paginate @boards, :remote => :true  %>
  </div>
控制器中的

@user.boards是属于用户的每个板。

但是我得到了Boards.all这样的每一块板子。

我想只获得属于用户的每一块电路板。

我尝试过使用@user.boards,但我有一个像sth一样的数组:

@boards = Kaminari.paginate_array(@user.boards).page(params[:page]).per(1)

如何解决太阳黑子的这个问题?

已编辑:已添加控制台测试

1.9.2-p290 :094 > Board.all.size #I get count boards for Board.all
 => 4 

1.9.2-p290 :095 > user = User.first #I get the first

1.9.2-p290 :096 > user.boards.size #I get count for boards belongs to user
 => 2 

1.9.2-p290 :098 > user.boards.solr_search.total # This is the problem :O The result must be 2
 => 4 

2 个答案:

答案 0 :(得分:3)

问题已修复

修复:要建模可搜索的块,您已添加此主板的父级:user_id ,如果您有mongodb数据库则为字符串,如果您有sql数据库则为整数:

#search
  searchable do
   text :name
   string :user_id
 end

在本案例的控制器中,我添加了s.with(:user_id, @user.id)并将@user.boards替换为模型名称,如:

def boards
   @user = User.find_by_slug(params[:id])
     @search = Board.solr_search do |s|
       s.fulltext params[:search]
       s.keywords params[:search]
       s.order_by :created_at, :desc
       s.with(:user_id, @user.id)
       s.paginate :page => params[:page], :per_page => 1
     end

   @boards = @search.results
respond_to do |format|
  format.html { render :layout => nil}# panel.html.erb
  format.json { render json: @boards }
  format.js
end
end

现在工作正常:D。谢谢

答案 1 :(得分:1)

问题似乎是SOLR返回的次数超出了你的预期 - 其余的代码就我所知。

首先验证params[:search]是否具有您期望的值(检查development.log),如果是,则应运行rails console并尝试手动搜索。