Определение переменной js выполняется без $
.Где это задокументировано:
Из документации API в ассоциации has_many в " Модуль ActiveRecord :: Associations :: ClassMethods "
collection.build ( attribute = {},…) Возвращает один или несколько новых объектов тип коллекции, которая была создается с атрибутами и связаны с этим объектом через внешний ключ, но еще не был сохранены. Примечание: это работает только если связанный объект уже существует, а не если это ноль!
Ответом для построения в противоположном направлении является слегка измененный синтаксис. В вашем примере с собаками,
Class Dog
has_many :tags
belongs_to :person
end
Class Person
has_many :dogs
end
d = Dog.new
d.build_person(:attributes => "go", :here => "like normal")
или даже
t = Tag.new
t.build_dog(:name => "Rover", :breed => "Maltese")
Вы также можете использовать create_dog, чтобы сохранить его мгновенно (во многом как соответствующий метод "create", который вы можете вызвать для коллекции)
Как рельсы достаточно умны? Это волшебство (точнее, я просто не знаю, хотелось бы узнать!)