嵌套模型中的属性
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 %>
但是视图的代码很多...我很想在控制器中进行计算以创建视图的距离数组。
我正在尝试从以下位置获取两个属性:
<% 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 %>
但是视图的代码很多...我很想在控制器中进行计算以创建视图的距离数组。