рельсы неправильная ассоциация has_many ссылка - PullRequest
0 голосов
/ 19 апреля 2011

Попытка установить очень простую связь между клиентом и моделью контакта.

Customer has_many :contacts 
Contact belongs_to :customer
User has_many :customers

Маршруты

    resources :customers do
      resources :contacts
    end

Я не хочу, чтобы / контакты были доступны

Когда я добавляю свои взгляды

new_customer_contacts_path

У меня ошибка. Если у меня есть

new_customer_contact_path(contact)

работает, однако ссылка на контакт # показана неверно -> он направляет к клиентам / 7 / контакт / 2, где это должны быть клиенты / 2 / контакт / 7

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 19 апреля 2011
new_customer_contact_path(contact)

Это неправильно.Вы должны передать ему клиента вместо контакта.

Если вы хотите показать контакт клиента, вы должны использовать customer_contact_path (customer, contact).

Для справки перейдите на http://guides.rubyonrails.org/routing.html и поиск «Создание путей и URL-адресов из объектов»

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

В случае вложенных маршрутов вам необходимо передать объекты (или хотя бы их идентификаторы) в том порядке, в котором они перечислены в маршруте. В случае 'new' вам нужно только передать идентификатор родительского объекта, поскольку для нового вложенного объекта еще нет идентификатора.

new_customer_contact_path(customer)

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

Вы должны сказать клиенту, чей контакт принадлежит_!

Вроде следующего:

# Customer.first and Contact.first can be exchanged to instances 
# of Customer or Contact!

new_customer_contacts_path(Customer.first)
edit_customer_contact_path(Customer.first, Contact.first)
customer_contacts_path(Customer.first)
...