2016-11-03 41 views
0

全部,通過'中間'模式的迭代

我是比較新的Rails,需要一點幫助。

我正試圖通過包含'Users'和'Chores'ID的'Chorelists'進行迭代。雜事和用戶的關聯是'has_many',而編舞者的關聯是'belongs_to'。 Chorelists可以很好地保存(控制檯承擔了這一點),爲用戶和雜事提供正確的ID,但是我無法弄清楚在'savelist#display'視圖中遍歷它們的語法。

任何幫助將不勝感激!

class SaveListController < ApplicationController 

before_filter :authenticate_user! 

def index 

@chorelist = Chorelist.create(user_id: params[:user_id], chore_id: params[:chore_id]) 

redirect_to pick_chores_path 

end 


def display 

@chorelist = Chorelist.all 

@user = User.find(current_user.id) 

end 

end 

你會在每個迭代通過當前用戶的chorelist得到實際的雜項名稱?

回答

1

Chorelist作爲「連接」模型運行;其目的是加入UserChore

要獲得Chores列表對於給定User,你要建立在User模型has_many :through關係。

class User 
    has_many :chorelists 
    has_many :chores, through: :chorelists 
end 

class Chorelist 
    belongs_to :user 
    belongs_to :chore 
end 

採用這種設置,該User模型將獲得chores集合,你可以遍歷。

<ul> 
    <% @user.chores.each do |chore| %> 
    <li><%= chore.name %></li> 
    <% end %> 
</ul> 
+0

嗯......它告訴我,「無法找到關聯:模型用戶chorelist」 – Justin

+0

但我在那裏有'通過'語法。 – Justin

+0

很抱歉!我更新了上面的代碼片段以放入缺失的關聯聲明。 LMK怎麼回事 –