1

オブジェクト (dgroup) を別のコントローラー (tplans) のインデックス アクションに単純に渡そうとしています。外部キーに基づいてルックアップを実行しているので、フィルタリングする必要があるオブジェクト 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)

コードは機能しますが、明らかに必要なオブジェクトが見つかりません。コントローラーコードが正しく構造化されていることを確認するためにこれを行っていました。

4

2 に答える 2

2

私はあなたparams[:id]がゼロになると思います。

試す

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

index メソッドで取得します。

その理由は、rake:routes が表示される場合です。

 tplans GET    /tplans(.:format)          {:action=>"index", :controller=>"tplas"}
于 2013-04-26T11:05:44.797 に答える