Ich versuche auf meine Dirts/Index Seite zuzugreifen, aber ich bekomme diesen Fehler in der folgenden Abbildung. nil: NilClass, wenn ByeBug das erwartete Ergebnis meldet
Also habe ich eine byebug in dem #total_trip_miles, um zu sehen, was los ist:
class Driver < ApplicationRecord
has_many :dirts
validates :name, presence: true, uniqueness: true
def total_trip_miles
byebug
collect_trip_miles.round.to_s
end
def average_speed
total_distance = collect_trip_miles
total_rate = collect_trip_seconds
((total_distance/total_rate)*3600).round
end
def collect_trip_miles
dirts.map do |trip|
trip.distance.to_f
end.inject(:+)
end
def collect_trip_seconds
seconds = []
dirts.map do |trip|
seconds << trip.change_in_time(trip.start_time, trip.end_time)
end
seconds.inject(:+)
end
end
Als ich die collect_trip_miles.round.to_s
von rufen byebug ich "55"
bekommen, was genau das ist, was ich will meinen spec passieren :
ich rufe die Methode von #drivers
im dirt/index.html.erb
:
<ul id="trips">
<% drivers.each do |driver| %>
<li>
<article class="driver">
<header>
<h2><%= show_name_of(driver) %></h2>
</header>
<p>
<%= "#{show_total_miles_of(driver)} Miles" %>
</p>
<table>
</table>
<footer>
</footer>
</article>
</li>
<% end %>
</ul>
Und diese Methoden aufgerufen werden aus meiner app/helpers/dirts_helper.rb
module DirtsHelper
def show_name_of(driver)
the_driver(driver).name.capitalize
end
def show_total_miles_of(driver)
the_driver(driver).total_trip_miles
end
def the_driver(driver)
Driver.find(driver.first)
end
def drivers
@driver_store = {}
@drivers.each_with_index do |driver, dirts|
@driver_store[driver.id] = driver.dirts
end
@driver_store
end
end
Und dann die Controller-Aktion kommt von app/controllers/dirts_controller.rb
class DirtsController < ApplicationController
def index
@drivers = Driver.all
end
end
Nach dem, was ich beschrieben habe und Beweise gezeigt für gibt es Manch- Super-offensichtlicher-ich-sollte-mich-schämen-von-mir-Grund, warum die Methoden meines Treibermodells in meinem lokalen Host explodieren, aber das Debugging meldet sich wie erwartet?
Froh, dass du es herausgefunden hast. – dps