Приложение Rails 3.1 имеет родительские и дочерние идентификаторы неправильно в помощнике маршрута

У меня есть приложение Rails 3.1 с родительским объектом Mom и дочерним объектом Kid. Леса были, насколько это возможно, сгенерированы, а не кодированы вручную. В /app/views/kids/_kid.html.erb я добавил

<%= mom_kid_path(kid) %>

Для мамы с идентификатором 1 и ребенка с идентификатором 2 это показывает /moms/2/kids/1, у которого идентификаторы указаны неправильно.

Все, что у меня есть в /config/routes.rb, это

resources :moms do
  resources :kids
end

Что я сделал не так?

Код приложения находится по адресу https://github.com/dominicsayers/momkid. Точные шаги, которые я предпринял для создания приложения, приведены здесь: http://blog.dominicsayers.com/2011/08/24/howto-create-a-simple-parent-child-form-in-rails-3-1/ . Я буду рад добавить любую другую конкретную информацию, которая требуется.


person Dominic Sayers    schedule 07.09.2011    source источник


Ответы (1)


РЕДАКТИРОВАТЬ/ОТВЕТ:

Rails нуждается в переменных mom и kid при использовании помощника _path. Таким образом, это должно выглядеть примерно так:

<%= mom_kid_path(kid.mom, kid) %>

Оригинальный ответ... немного неправильно понял вопрос, но у него есть полезная ссылка:

Это поведение по умолчанию для рельсов, это не наоборот.

Ваш вложенный маршрут в основном гласит: «Каждая мама ресурсов имеет набор под/вложенных ресурсов с именами детей».

Эта страница является отличным ресурсом. Я дал ссылку на раздел вложенных маршрутов, так что, возможно, это поможет вам решить эту проблему. Маршрутизация Rails

person Msencenb    schedule 07.09.2011
comment
Я не говорю, что объекты расположены неправильно. /moms/n/kids/m правильно. Я говорю, что идентификаторы неверны: идентификатор мамы в базе данных равен 1, идентификатор ребенка - 2, но путь - /moms/2/kids/1. Я пояснил это в вопросе - спасибо за ваш вклад. - person Dominic Sayers; 07.09.2011
comment
Ах попался. Я считаю, что вы должны передать этому методу и маму, и ребенка. Можешь попробовать mom_kid_path(мама,ребенок)? вместо того, чтобы просто пройти мимо ребенка? - person Msencenb; 07.09.2011
comment
Мсенсенб, ты мужчина. На самом деле мне нужен был mom_kid_path(kid.mom, kid), потому что не было доступной переменной mom - если вы добавите ответ на этот вопрос, я приму его. - person Dominic Sayers; 07.09.2011
comment
Рад, что исправлено! Я отредактировал ответ выше, чтобы отразить, как вы его исправили :) - person Msencenb; 07.09.2011