1

我正在尝试将一个对象传递给另一个控制器,以便我可以根据这个对象进行排序。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>

但这没有用。我不知道为什么,我得到的错误看起来就像控制器假设我正在发送一个计划。有什么建议么?我对红宝石真的很陌生,所以我很好奇应该如何调用各种控制器上的方法。谢谢!

4

2 回答 2

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])
于 2013-05-15T18:07:47.507 回答
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>
于 2013-05-15T18:36:59.163 回答