2016-07-26 44 views
0

我需要过滤出现在我的索引页上的帖子。我最初过滤通过他们在视图中使用此条件:如何过滤基于嵌套属性的范围的Rails 4中的帖子?

if current_user.courses.any? {|h| h[:name] == post.course.name} 

但自从我加入will_paginate,我得到的空白页,因为它甚至进行分页我不想显示的帖子。我如何使用示波器过滤掉控制器中的帖子?

这是我的模型:

class Post < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :course 
    has_many :comments 
end 

class Course < ActiveRecord::Base 
    belongs_to :user 
    has_many :posts 
    belongs_to :major 
end 

和我的控制器代码

def index 
    @posts = Post.all.order("created_at DESC").paginate(:page => 
    params[:page], :per_page => 1) 
end 
+0

请显示您的控制器代码 –

+0

对不起刚发布了它们,谢谢 – Ryan

+0

您需要制作[加入您的表](http://guides.rubyonrails.org/active_record_querying.html#joining-tables)。 – teksisto

回答

0

如果过滤器包含不止一个courses names

def index 
    @posts = Post.joins(:course).where('courses.name in (?)',current_user.courses.map(&:name)).paginate(:page => params[:page], :per_page => 1) 
end 
+0

哇!这似乎真的接近工作,只有我得到了一个错误:未定义的方法'加入'[“电气网络”,“物理3”]:阵列你的意思是?加入 – Ryan

+0

是的,它的加入。我编辑了我的答案 –

+0

好的,谢谢,虽然现在它有错误:参数的错误数量(给定1,预期0) – Ryan