Ruby on rails 将在Rails环境中运行的代码包装到模块中
我有这个代码,它工作得很好Ruby on rails 将在Rails环境中运行的代码包装到模块中,ruby-on-rails,ruby,module,Ruby On Rails,Ruby,Module,我有这个代码,它工作得很好 require "date" @past = [] @future = [] @artist = Artist.find(2) def sort_by_date(artist) artist.events.each do |event| if event.date < DateTime.now @past << even
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)
看起来这里有几件事不对。您试图初始化一个模块,您只能初始化一个类,例如
类SortedArtListEvents
如果您有:
module Foo
def bar; end
end
bar
只能通过使用Foo
包含或扩展模块或类来访问。对于SortedArtListEvents:Module,如果出现错误未定义方法sort\u by\u date',则必须执行以下操作
module SortedArtistsEvents
def self.sort_by_date; end
end
要获得类似于排序的行为,请按日期排序。这里似乎有几件事情出错了。您试图初始化一个模块,您只能初始化一个类,例如类SortedArtListEvents
如果您有:
module Foo
def bar; end
end
bar
只能通过使用Foo
包含或扩展模块或类来访问。对于SortedArtListEvents:Module,如果出现错误未定义方法sort\u by\u date',则必须执行以下操作
module SortedArtistsEvents
def self.sort_by_date; end
end
为了获得类似于sortedArtDistSevents.sort\u by\u date
的行为,我创建了一个类来初始化我的模块,它在代码的末尾。当包含一个模块时,它的所有方法都必须有self
才能使用它们吗?不,它们没有,谷歌可能会更快,请看这里ok so,在该方法中添加关键字sort
,我得到了未定义的方法“事件”
。这是另一个错误-@artist
变量没有正确声明。我已经创建了一个类来初始化我的模块,它在代码的末尾。当包含一个模块时,它的所有方法都必须有self
才能使用它们吗?不,它们没有,谷歌可能会更快,请看这里ok so,在该方法中添加关键字sort
,我得到了未定义的方法“事件”
。这是另一个错误-@artist
变量未正确声明。您包括:ArtistEventSort,但模块名为:sortedardistevents。哦,伙计,好的,我已经解决了这个问题。但是仍然是相同的错误。您如何从Letsort类初始化模块?我刚刚将其包含在Letsort
类中,该类只是一个虚拟类,用于测试我的模块的实际操作。此外,正如用户nikkypx所建议的,我将该方法更改为“self.sort\u by\u date”
,这导致了此错误未定义的方法“events”
您包括:ArtistEventSort,但该模块名为:sortedardistevents.oh伙计,好的,我修复了此错误。但是仍然是相同的错误。您如何从Letsort类初始化模块?我刚刚将其包含在Letsort
类中,该类只是一个虚拟类,用于测试我的模块的实际操作。此外,正如用户nikkypx所建议的,我将方法更改为self.sort\u by\u date
,这导致了此错误未定义的方法“事件”