我的控制器中有这样的:
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
但我有一个像这样的数组分页:
@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
模型名称如下:
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。谢谢
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)