太阳黑子返回模型的所有结果
我在我的控制器中有这样的:
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
并手动尝试搜索。