2016-07-26 91 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