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

我在我的控制器中有这样的:

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 

在我看来:

 
:true %>

控制器中的@user.boards是属于用户的每个板。

但我得到了像Boards.all这样的每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 

问题得到解决

修复:为了模拟可搜索的块,你已经添加了这个板的父级:user_id ,如果你有mongodb数据库则为字符串,如果你有sql数据库则为整数:

 #search searchable do text :name string :user_id end 

在这种情况下的控制器中,我添加了s.with(:user_id, @user.id)并将@user.boards替换为Model名称,如:

 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。 谢谢

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

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