2012-06-05 123 views
0

我想從我的數據庫檢索所有職位,並按照他們的創建日期DESC順序列出他們。到目前爲止,我已經設法測試屬於一個類別的所有帖子,但是我想顯示所有帖子,不管它們屬於哪個類別。我知道我必須循環每個類別,並從每個文章中獲取帖子,但我不知道如何去做。這裏是我的代碼:循環內循環在Rails控制器

編輯:

def index 
    @institution = Institution.find(current_user.institution.id) 
    @categories = Category.all 
    @categories.each do |category| 
     @posts = Post.where("category_id = ? and institution_id = ?", category, @institution).order("created_at DESC") 
    end 
    authorize! :read, @post 
    respond_with(@posts) 
    end 

可有人請點我在正確的方向?

編輯2:我的觀點(index.html.haml)

%h1 Listing posts 

%table 
    %tr 
    %th Title 
    %th Description 
    %th User 
    %th Category 
    %th Type 
    %th Class 
    %th Institution 

    - @posts.each do |post| 
    %tr 
     %td= post.title 
     %td= post.description 
     %td= post.user_id 
     %td= post.category_id 
     %td= post.institution_id 
+0

爲什麼不通過'Post.all'查詢所有帖子,還是隻想要設置了category_id的帖子? – cpjolicoeur

+0

如果我沒有弄錯,你只是想按照類別對​​帖子進行分組,請參閱[Rails Guides](http://guides.rubyonrails.org/active_record_querying.html#group) – topek

+0

我忘記提及我想檢索帖子有一個category_id設置!抱歉。 –

回答

3

您將要覆蓋每個迭代@posts。 試試這個:

def index 
    @institution = Institution.find(current_user.institution.id) 
    @categories = Category.all 
    @posts = [] 
    @categories.each do |category| 
     tposts = Post.where("category_id = ? and institution_id = ?", category, @institution).order("created_at DESC") 
     @posts += tposts if tposts 
    end 
    authorize! :read, @post 
    respond_with(@posts) 
end 

若要檢索與非空CATEGORY_ID的所有帖子,試試這個:

def index 
    @institution = Institution.find(current_user.institution.id) 
    @categories = Category.all 
    @posts = Post.where("category_id is not null and institution_id = ?", @institution).order("created_at DESC") 
    authorize! :read, @post 
    respond_with(@posts) 
end 

變化is not null> 0整數CATEGORY_ID或!= ''如果你的表中包含的,而不是空'。

祝你好運。

+0

似乎不適用於我的情況。我只是想循環每個類別,並使用我的檢索,因爲我測試它,它的工作原理。 –

+0

@DanieGarzon我編輯根據您更改的代碼。 – Anil

+0

謝謝您的快速回答Anil!你是對的我檢查了我的控制檯,我覆蓋了@posts,但是我遵循了你的建議,'<<'給了我一個錯誤:「未定義的方法'<<'for nil:NilClass」。你確定這些是有效的括號嗎? –