在添加新子项时将新子项与其父项链接

时间:2010-07-29 19:59:19

标签: ruby-on-rails forms parent-child

我有customer模型has_many events当我转到客户展示页面时,我会链接到events所拥有的所有customer。我想添加“此客户的新活动”链接。现在,我正在使用<%= link_to "New Event for this Customer", new_event_path %>,但是当我按照该链接时,我必须手动输入客户的ID号。如何自动执行此操作,以便当我单击“为此客户添加新事件”时,rails知道我正在为该特定客户添加新事件,而不是自己输入customer_id?

2 个答案:

答案 0 :(得分:3)

您要找的是nested resources,这里是good introduction

对于这种特殊情况,你应该声明你的路线:

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) %>

答案 1 :(得分:0)

将客户ID作为参数<%= link_to "New Event for this Customer", new_event_path, {:cust_id => customer.id} %>添加到链接中,并在表单中将其设置为事件对象的隐藏参数。您的模型将自动填充客户ID。