2013-04-26 38 views
1

我试图简单地将对象(dgroup)传递给另一个控制器(tplans)索引操作。我正在执行基于外键的查找,因此我将它传递给它必须过滤的对象ID,但似乎没有工作。这是我的代码:从轨道中的对象传递ID到控制器

内DGROUP的index.html的:

<% @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 2013-04-26 11:05:17

+1

您可能需要使用'params [:dgroup_id]',具体取决于您的路线 – mihai 2013-04-26 11:10:45

回答

2

我怀疑你的params[:id]即将到来零。

尝试

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

你会得到它在你的索引方法。

的原因是,如果你耙:路线,你会看到

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

您传递对象DGROUP到您的链接,而不是通过一个ID的。

尝试

<% @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 %> 
相关问题