Связывание нового потомка с его родителем при добавлении нового потомка - PullRequest
0 голосов
/ 29 июля 2010

У меня есть модель customer, которая имеет_many events Когда я перехожу на страницу показа клиентов, у меня есть ссылки на все events, которые принадлежат customer.Я хочу добавить ссылку "Новое событие для этого клиента".Сейчас я делаю это с <%= link_to "New Event for this Customer", new_event_path %>, но когда я перехожу по этой ссылке, мне приходится вручную вводить идентификационный номер клиента.Как я могу автоматизировать это так, чтобы при нажатии «Добавить новое событие для этого клиента» rails знал, что я добавляю новое событие для этого конкретного клиента вместо того, чтобы самому вводить customer_id?

Ответы [ 2 ]

3 голосов
/ 30 июля 2010

То, что вы ищете, называется nested resources, вот вам хорошее введение .

Для этого конкретного случая вы должны объявить ваши маршруты следующим образом:

map.resources :customers do |customers|
   customers.resources :events
end

Приведенное выше объявление позволит вам определять маршруты как:

new_customer_event_url(@customer.id)
=> customers/:customer_id/events/new

А в вашем конкретном случае:

<%= link_to "New Event for this Customer", new_customer_event_path(@customer) %>
0 голосов
/ 30 июля 2010

Добавьте идентификатор клиента к ссылке в качестве параметра <%= link_to "New Event for this Customer", new_event_path, {:cust_id => customer.id} %> и в форме установите его как скрытый параметр для объекта события.Ваша модель будет автоматически заполнена идентификатором клиента.

...