2014-07-07 45 views
0

控制器代碼:紅寶石如何讀取哈希

def index 
    @folders = Folder.where(parent_id: 0, user_id: current_user) 
    @subfolders = Hash.new() 
    @folders.each_with_index do |folder, index| 
    @subfolders[folder.id] = { folder.id => Folder.where(parent_id: folder.id) } 
    end 
end 

查看:

<% @folders.each_with_index do |folder, index| %> 
    <td><%= folder.name %></td><br /> 
    @subfolders[index].name 
<% end %> 

的@subfolders [1] .to_s對象本身返回以下結果:

{1=>#<ActiveRecord::Relation [#<Folder id: 2, name: "tt", user_id: 1, created_at: "2014-06-21 19:29:32", updated_at: "2014-06-21 19:29:32", parent_id: 1>]>} 

我的問題是,如何閱讀這個@subfolders哈希在視圖中?我想顯示的子文件夾顯示父後...請幫助

+0

我想' @subfolders [folder.id]'將會是@subfolders [index]'對嗎? –

+0

'@subfolders [folder.id] [folder.id]'會做。但爲什麼你需要這種奇怪的鏈接。 –

+0

是的,那是工作,但你實際上是正確的。事情是,一旦我讀取所有的父文件夾,我需要收集來存儲它的子文件夾,這就是爲什麼我決定使用hases。如果您有任何建議,請讓我知道?是否有可能使用數組重寫? – user3581552

回答

1

的下面似乎是一個更有效的解決問題的方法,因爲它運行2次的查詢,而你產生n + 1

ids = Folder.where(parent_id: 0, user_id: current_user).pluck(:id) 
@subfolders = Folder.where(parent_id: ids).group_by(:parent_id)