2009-11-18 1 views
0

Учитывая модель, как:нахождение родителя вложенного ресурса, который имеет несколько типов родителей

class PhoneNumber < ActiveRecord::Base 
    has_many :personal_phone_numbers 
    has_many :household_phone_numbers 
    has_many :organization_phones 

    has_many :people, :through => :personal_phone_numbers 
    has_many :households, :through => :household_phone_numbers 
    has_many :organizations, :through => :organization_phones 
end 

При просмотре номера телефона, я, вероятно, буду просматривать его в качестве вложенного ресурса, поэтому контроллер будет иметь Params элемент одного из person_id, household_id или organization_id

Мне нужно мнение иметь link_to "Return", ..., возвращающий к нужному ресурсу, мы пришли к номеру телефона с. Как мне это сделать?

ответ

1

Если вы используете вложенные ресурсы, для вашего родительского объекта вам понадобится фильтр beforeNumber, поэтому вы можете сделать @parent.phone_numbers.build(...) правильно? В то же время (before_filter) установите @parent_path (organization_path, household_path ...), и у вас будет доступное в вашем представлении для ссылки.

Если вы складывали номер телефона к каждому из этих вещей (организация, домашнее хозяйство ...) с использованием :polymorphic => true вместо has_many :through, вы могли бы просто взять @parent, что вы будете настройки в PhoneNumbersController before_filter и сделать polymorphic_path(@parent) вместо.

+0

Если @parent установлен в контроллере, и у вас есть спокойные маршруты, вы можете просто сделать ссылку link_to «Return», @ parent' – mckeed

+1

На самом деле, я не понимал, что такое magic polymorphic_url. На мой взгляд, все, что мне нужно сделать, это «link_to» Return », @ parent', и он волшебным образом знает, на какой ресурс вернуться. – DGM

Смежные вопросы