我正在使用 Rails (3.2.11) 上的 Ruby (1.9.3) 开发航班跟踪应用程序。这个应用程序有一个Flight
类,其中有一个字符串列tail_number
,用于跟踪执行飞行的飞机的尾号。
我正在尝试为尾号创建一个索引视图,显示尾号列表和每个尾号的计数,并链接到一个视图,该视图将显示所有Flights
具有该尾号的视图。 我的显示页面正常工作,但link_to
在索引页面上工作时遇到问题。
显示视图由我在 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.tail_number ( ) 的链接。此链接显然不会将我发送到我想要的航班#show_tail。/tails/N909EV
/tails.N909EV
我已经成功地为与 Flight (Airports, Trips) 关联的其他模型创建了索引,并为 Flight 本身创建了索引,并且它们都通过使用例如link_to trip.name, trip_path(trip)
我试图用于尾号的语法来工作。因此,如果 Tail_Number 是一个模型,这将是非常微不足道的,我可以以同样的方式对待它,但它似乎太微不足道了,不能作为一个模型而不是一个给定航班的属性。
我假设它对我不起作用的原因是当我使用trip_path(trip)
,时trip
是一个对象,而 in tails_path(tail_number)
,tail_number
是一个字符串。但我不确定我应该如何链接到它。我已经尝试过使用 URL 参数的 Rails link_to action中的命名路由之类的解决方案,但如果我这样做,我会遇到同样的undefined method
问题,所以我恢复到上面列出的内容。
我应该如何格式化我的 link_to 以使其工作?