我正在尝试将对象传递给另一个控制器,以便我可以根据此对象进行排序。 dgroups has_many计划。我试图根据dgroup.id排序我的计划我有以下代码
dgroups视图:
<% @dgroup.each do |dgroup| %>
<tr>
<td><%= dgroup.dings.map(&:id) %></td>
<td><%= dgroup.id %></td>
<td><%= link_to 'Show Plans', plans_path %></td>
<td><%= link_to 'Edit', edit_dgroup_path(dgroup) %></td>
<td><%= link_to 'Destroy', dgroup, method: :delete, data: { confirm: 'Are you sure?' } %></td>
计划控制器:
def index
@dID = Dgroup.find(params[:id])
@plans = @dID.plans
respond_to do |format|
format.html # index.html.erb
format.json { render json: @plans }
end
end
我已尝试从dgroups视图传递diaggroup,例如:
<td><%= link_to 'Show Plans', plans_path(dgroup) %></td>
但是这没用。我不知道为什么,我得到的错误似乎是控制器假设我正在发送一个计划。有什么建议?我对ruby很新,所以我很好奇如何调用各种控制器上的方法。谢谢!
答案 0 :(得分:2)
看来你想要的是这个:
<td><%= link_to 'Show Plans', plans_path(:id => dgroup.id) %></td>
如果不起作用,请尝试更改参数名称:
<td><%= link_to 'Show Plans', plans_path(:dgroup_id => dgroup.id) %></td>
并在您的控制器中:
@dID = Dgroup.find(params[:dgroup_id])
答案 1 :(得分:0)
使用嵌套资源不是一个好地方吗?
resources :dgroups do
resources :plans do
end
end
rake routes
dgroup_plans GET /dgroups/:dgroup_id/plans(.:format) plans#index
...
dgroup_plan GET /dgroups/:dgroup_id/plans/:id(.:format) plans#show
<td><%= link_to 'Show Plans', dgroup_plans(dgroup) %></td>
<td><%= link_to 'Edit Plan', dgroup_plan(dgroup, plan) %></td>