【发布时间】:2013-03-08 04:05:02
【问题描述】:
我正在使用 Ruby (1.9.3) on Rails (3.2.11) 开发航班跟踪应用程序。这个应用程序有一个Flight 类,其中有一个字符串列tail_number 用于跟踪执行飞行的飞机的tail number。
我正在尝试为尾号创建一个索引视图,显示尾号列表和每个尾号的计数,并链接到一个视图,该视图将显示所有具有该尾号的Flights。 我的显示页面可以正常工作,但我无法让 link_to 在索引页面上正常工作。
显示视图由 flights 控制器的 show_tail 操作处理,我在 routes.rb 中设置了该操作:
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。
我已经成功地为与 Flight (Airports, Trips) 关联的其他模型创建了索引,并为 Flight 本身创建了索引,并且它们都通过使用例如我尝试使用的 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 以使其正常工作?
【问题讨论】: