嵌套模型中的属性

Attributes in Nested Models

我正在尝试从以下位置获取两个属性:

<% for location in @trip.locations %>
<%= location.address %>
<% end %>

并将它们放入计算它们之间距离的方法中:

<% @distance = Geocoder::Calculations.distance_between(address1, address2) %>

我试图使用 f.e @trip.locations.first(1) 但我只收到这两个地址的第一个字母,我无法适应方法(参数数量错误- 1 代表 2)

如有任何帮助,我将不胜感激。

<% @trip.locations.each do |location| %>
  <%= location.address %>
<% end %>

这将遍历所有 @trip 的位置并打印出来。

在 Ruby 中,您不使用 for 循环。阅读 Ruby.

中的迭代器

要从 @trip 获取第一个位置,您可以这样做:

@trip.locations.first

获取最后位置:

@trip.locations.last

计算这两者之间的距离:

<% @distance = Geocoder::Calculations.distance_between(@trip.locations.first, @trip.locations.last) %>

您可以遍历位置,跟踪最后一个位置,以便计算与当前位置的距离。

<% last_location_address = nil %>
<% @trip.locations.each do |location| %>
  <% if last_location_address
    <% distance = Geocoder::Calculations.distance_between(last_location_address, location.address) %>
    <%= distance # this line outputs the distance %>
  <% end %>
  <% last_location_address = location.address %>
<% end %>

但是视图的代码很多...我很想在控制器中进行计算以创建视图的距离数组。