我正在为我的孩子制作一个应用程序来记录他们的家务。我有3个孩子(Nick,Siena,Mac)并且有一个主页,每个名字都有超链接...
我有以下关联:
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
如何(在点击孩子的名字时)将child_id保存为会话对象,以便将完成次数发布到完成模型?
当其他孩子在主页上点击他们的名字时,如何清除/更改该子项?
非常感谢任何帮助。谢谢,CB
答案 0 :(得分:1)
所以乔什超越了。作为一个菜鸟,我想要为大多数人提供更为简单和基本的东西。答案很简单:
ApplicationController
private
def current_child
child = Child.find(params[:id])
session[:child_id] = child.id
end
end
这允许我将该孩子的id存储在会话中并发布到已完成的模型中。
答案 1 :(得分: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#new有类似
的东西def new
@chore = <current_child>.chores.build(params)
end
希望这有帮助。