我正在为我的孩子们开发一个记录他们的家务的应用程序。我有3个孩子(尼克,锡耶纳,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
所以josh做得很好。作为一个新手,我想问一些对大多数人来说更简单和基本的问题。答案很简单:
ApplicationController
private
def current_child
child = Child.find(params[:id])
session[:child_id] = child.id
end
end
这允许我将孩子的id存储在会话中,并发布到完成的模型。
如果我正确理解了这个问题(至少正如你在评论中描述的那样),我最近做了类似的事情。参见从多个父对象构建嵌套属性。基本上,我使用多态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