2011-04-28 84 views
0

我正在爲我的孩子開發一個應用程序來記錄他們的雜事。我有3個孩子(尼克,錫耶納,蘋果機),並有超鏈接的每個名稱的主頁...Rails協會/會議問題

我有以下關聯:

Child: 
    has_many :completions 
    has_many :chores, :through=>:completion 

Completion: 
    belongs_to :child 
    belongs_to :chore 

Chore: 
    has_many :completions 
    has_many :kid, :through=>:completion 
  1. 我如何(在點擊孩子的姓名)將child_id保存爲會話對象,以將完成內容發佈到完成模型?

  2. 當另一個孩子在主頁上點擊他們的名字時,我該如何清除/更改sesison給新孩子?

任何幫助,非常感謝。謝謝你,CB

+1

Rails路由如何與您的問題相關? :/ – Spyros 2011-04-28 02:13:52

+0

這裏有問題嗎?它看起來並不像它。 – 2011-04-28 03:22:46

+0

希望我清理了這個問題。我需要將child_id傳遞給下一個視圖(雜項/索引)......以便在選擇雜項並單擊提交後,將child_id和chore_id傳遞給完成的模型。非常感謝。 – chris 2011-04-28 13:01:12

回答

0

如果我正確地理解了這個問題(至少如你的評論中所述),我最近做了類似的事情。見Building a nested attribute from multiple parent objects。基本上,我用polymorphic_url做一個鏈接,創建一個新的項目(我可能會使用@ child.chores.build(PARAMS)),並通過該屬性:chore_id,即

link_to "Mark as complete", polymorphic_url([:new, @child, :completion], :chore_id => @chore.id) 

在你的控制器確保爲您的ChoresController#新你有類似

def new 
    @chore = <current_child>.chores.build(params) 
end 

希望這有助於。

+0

我很感激。我想我在問一些更簡單的事情......如何在點擊孩子的名字時設置「當前孩子」? – chris 2011-04-28 18:14:14

+0

你是在說更多的全局變量嗎?或者這將在某個模型的背景下進行? – 2011-04-28 18:19:46

1

所以,喬希超越了。作爲一個noob,我對大多數人提出了更簡單更基本的要求。答案很簡單:

ApplicationController 

private 
    def current_child 
    child = Child.find(params[:id]) 
    session[:child_id] = child.id 
    end 
end 

這使我可以將該孩子的ID存儲在會話中併發布到完成的模型中。

+0

感謝您的接受。您的解決方案將符合我下一個建議的要求。很高興這是爲你工作。 – 2011-04-28 18:44:22

+0

感謝你以及喬希。看起來你是一個很棒的幫助/這個很酷的社區的資源。 – chris 2011-04-28 23:05:36