2013-04-26 3 views
1

Я пытаюсь просто передать объект (dgroup) в действие индекса другого контроллера (tplans). Я выполняю поиск на основе внешнего ключа, поэтому я передаю ему идентификатор объекта, который он должен фильтровать, но он, похоже, не работает. Это мой код:Передача идентификатора контроллеру из объекта в рельсах

В index.html в DGROUP в:

<% @dgroups.each do |dgroup| %> 
<tr> 
<td><%= dgroup.id %></td> 
<td><%= link_to 'Show TPlans', tplans_path(dgroup) %></td> 
<td><%= link_to 'Edit', edit_dgroup_path(dgroup) %></td> 
<td><%= link_to 'Destroy', dgroup, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
</tr> 
<% end %> 

В контроллере tplan в:

def index 
    @dgid = Dgroup.find(params[:id]) 
    @tplans = @dgid.tplans 

    respond_to do |format| 
    format.html # index.html.erb 
    format.json { render json: @tplans } 
end 
end 

Что я делаю неправильно? Обратите внимание, что если я заменю:

@dgid = Dgroup.find(params[:id]) 

с

@dgid = Dgroup.find(1) 

код работает, только явно не найти объект, который я хочу. Я просто делал это, чтобы убедиться, что код контроллера структурирован правильно.

+0

Пожалуйста, вы можете отобразить маршрут для DGROUP индекса и редактировать действия? – Mohanraj

+1

вам, вероятно, придется использовать 'params [: dgroup_id]', в зависимости от вашего маршрута – mihai

ответ

2

Я подозреваю, что ваш params[:id] подходит к нулю.

попробовать

<td><%= link_to 'Show TPlans', tplans_path(:id => dgroup.id) %></td> 

вы получите его в индексном методе.

причина, если вы загребать: маршруты, которые вы увидите

tplans GET /tplans(.:format)   {:action=>"index", :controller=>"tplas"} 
0

Вы передаете объект DGROUP к вашим ссылкам вместо передачи идентификатора.

Попробуйте

<% @dgroups.each do |dgroup| %> 
<tr> 
<td><%= dgroup = dgroup.id %></td> 
<td><%= link_to 'Show TPlans', tplans_path(dgroup) %></td> 
<td><%= link_to 'Edit', edit_dgroup_path(dgroup) %></td> 
<td><%= link_to 'Destroy', dgroup, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
</tr> 
<% end %> 

или

<% @dgroups.each do |dgroup| %> 
<tr> 
<td><%= dgroup.id %></td> 
<td><%= link_to 'Show TPlans', tplans_path(dgroup.id) %></td> 
<td><%= link_to 'Edit', edit_dgroup_path(dgroup.id) %></td> 
<td><%= link_to 'Destroy', dgroup.id, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
</tr> 
<% end %> 
Смежные вопросы