Ich habe diesen Code und es funktioniert perfektVerpackungscode, der in ein Modul in Rails-Umgebung läuft
require "date"
@past = []
@future = []
@artist = Artist.find(2)
def sort_by_date(artist)
artist.events.each do |event|
if event.date < DateTime.now
@past << event.id
else
@future << event.id
end
end
end
def event_title(arr)
arr.each do |event_id|
e = Event.find(event_id)
artist_names = []
e.artists.each do |artist|
unless artist.name == @artist.name
artist_names << artist.name
end
end
puts "#{e.name} with #{artist_names.join(", ")} at #{(Venue.find(e.venue_id)).name}"
end
end
sort_by_date(@artist)
puts "Upcoming Events: "
event_title(@future)
puts "Past Events: "
event_title(@past)
ich diese Operation in einem Modul ausgeführt werden soll wickeln, aber ich habe Probleme zu verstehen, wie artist_id
passieren dazu richtig. Mit diesem Befehl rails runner app/modules/artist_event_sort.rb
erhalte ich diesen Fehler: `` ': undefined Methode sort_by_date' for SortedArtistEvents:Module (NoMethodError)
. Die beiden Methoden sort_by_date
und event_title
funktionierten so, wie sie es sollten, bevor ich versuchte, diese ganze Operation in ein Modul zu verpacken, so dass ich weiß, dass ich etwas verpasst habe.
module SortedArtistEvents
require "date"
attr_accessor :artist_id
def initialize(artist_id)
@past = []
@future = []
@artist = Artist.find(artist_id)
end
def sort_by_date(artist)
artist.events.each do |event|
if event.date < DateTime.now
@past << event.id
else
@future << event.id
end
end
end
def event_title(arr)
arr.each do |event_id|
e = Event.find(event_id)
artist_names = []
e.artists.each do |artist|
unless artist.name == @artist.name
artist_names << artist.name
end
end
puts "#{e.name} with #{artist_names.join(", ")} at #{(Venue.find(e.venue_id)).name}"
end
end
sort_by_date(@artist)
puts "Upcoming Events: "
self.event_title(@future)
puts "Past Events: "
event_title(@past)
end
class LetsSort
include SortedArtistEvents
end
test_artist_sort = LetsSort.new(2)
Sie zB: ArtistEventSort aber das Modul genannt wird: SortedArtistEvents. – BKSpurgeon
oh man, ok das habe ich behoben. immer noch der gleiche Fehler. – sivanes
Wie initialisierst du dein Modul aus der LetsSort-Klasse? – BKSpurgeon