Rails (3.2.11) で Ruby (1.9.3) のフライト追跡アプリケーションに取り組んでいます。このアプリケーションにはクラスがあり、特に、飛行を実行した飛行機のテール番号を追跡するためFlight
の文字列列があります。tail_number
テール番号のインデックス ビューを作成し、テール番号とそれぞれの数のリストを表示し、そのテール番号Flights
を持つすべてを表示するビューにリンクしようとしています。 ショー ページは機能link_to
していますが、インデックス ページの作成に問題があります。
show ビューは、routes.rb で設定したflights
コントローラーのアクションによって処理されます。show_tail
match '/tails' => 'flights#index_tails'
match '/tails/:tail_number' => 'flights#show_tail'
フライト コントローラは、フライトをテール番号でグループ化し、カウントを提供します。
def index_tails
@flight_tail_numbers = Flight.where("tail_number IS NOT NULL").group("tail_number").count
end
テール ナンバー インデックス ページ (/app/views/flights/index_tails.html.erb) で、テール ナンバーとそれぞれのカウントのテーブルを作成し、テール ナンバーを適切なショー ビューにリンクするようにします。
<h1>Tail Numbers</h1>
<table>
<% @flight_tail_numbers.each do |tail_number, count| %>
<tr>
<td><%= link_to(tail_number, tails_path(tail_number)) %></td>
<td><%= count %>
</tr>
<% end %>
</table>
ただし、link_to
/tails/tail_number (たとえば、/tails/N909EV
)へのリンクを作成する代わりに、/tails.tail_number ( /tails.N909EV
) へのリンクを作成します。このリンクは明らかに、私が望んでいるフライト #show_tail に私を送信しません。
フライト (空港、旅行) に関連付けられている他のモデルのインデックスと、フライト自体のインデックスの作成に成功しました。これらはすべて、たとえばlink_to trip.name, trip_path(trip)
末尾番号に使用しようとしている構文を使用して機能します。したがって、Tail_Number がモデルである場合、これは非常に些細なことであり、同じように扱うことができます。
私にとってはうまくいかない理由は、を使用しているときにtrip_path(trip)
,trip
がオブジェクトであるのに対し、tails_path(tail_number)
,tail_number
が文字列であるためだと思います。しかし、どのようにリンクすればよいか正確にはわかりません。Rails link_to action with URL parametersの名前付きルートのような解決策を試しましたが、そうすると同じundefined method
問題が発生するため、上記のリストに戻しました。
これを機能させるには、link_to をどのようにフォーマットすればよいですか?