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 に答える