Рельсовые ассоциации / сессии вопрос - PullRequest
0 голосов
/ 28 апреля 2011

Я работаю над приложением для моих детей, чтобы записывать их дела. У меня трое детей (Ник, Сиена, 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
  1. Как (после нажатия на имя ребенка) сохранить child_id в качестве объекта сеанса для публикации завершений в моделях завершений?

  2. Как я могу очистить / изменить это место для нового ребенка, когда другой ребенок щелкает его имя на домашней странице?

Любая помощь очень ценится. Спасибо, CB

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Итак, Джош сделал все возможное. Как нуб я просил что-то гораздо более простое и элементарное для большинства людей. Ответ был довольно прост:

ApplicationController

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

Это позволило мне сохранить идентификатор этого ребенка в сеансе и публиковать его в готовой модели.

0 голосов
/ 28 апреля 2011

Если я правильно понимаю вопрос (по крайней мере, как описано в вашем комментарии), я недавно сделал нечто подобное. См. Создание вложенного атрибута из нескольких родительских объектов . По сути, я использовал 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

Надеюсь, это поможет.

...