0

我正在为我的孩子们开发一个应用程序来记录他们的家务。我有 3 个孩子(尼克、锡耶纳、麦克),并且有一个主页,每个名字都带有超链接...

我有以下关联:

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. 当另一个孩子在主页上点击他们的名字时,我如何清除/更改新的孩子?

任何帮助是极大的赞赏。谢谢,CB

4

2 回答 2

1

所以乔希超越了。作为一个菜鸟,我问的是对大多数人来说更简单和基本的东西。答案很简单:

ApplicationController

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

这使我可以将孩子的 id 存储在会话中并发布到已完成的模型中。

于 2011-04-28T18:37:06.797 回答
0

如果我正确理解了这个问题(至少如您的评论中所述),我最近做了类似的事情。请参阅从多个父对象构建嵌套属性。基本上,我使用 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

希望这可以帮助。

于 2011-04-28T17:39:27.833 回答