我正在使用带有Ruby v2.2.2的Sinatra V1.4.6。我的目录结构是:
SinatraTest
bin
app.rb
lib
fix_month.rb
views
test_view.rb
我的app.rb
文件是:
require 'sinatra'
require './lib/fix_month'
set :port, 8080
set :views, 'views'
get '/' do
@month = FixMonth.from_string('Jan 16')
erb :test_view
end
我的test_view.erb
包含:
<html>
<title>Test Page</title>
<body>
<%= @month %>
</body>
</html>
最后,我的fix_month.rb
包含:
class FixMonth < Fixnum
def initialize(mon)
super( mon )
end
def self.from_string( s )
FixMonth.new(s.to_i)
end
def to_s
"#{@@months_as_string[@mon]} #{year.to_s}"
end
end
当我访问网站的主页时,代码会获得类方法FixMonth.from_string
,然后发生以下错误:
2015-11-01 20:34:04 - NoMethodError - undefined method `new' for FixMonth:Class:
我需要什么才能像任何其他Ruby类一样使用我的FixMonth类?
答案 0 :(得分:2)
我需要什么才能像任何其他Ruby类一样使用我的FixMonth类?
不从没有new
方法的类继承。
Sinatra在这里是一个红鲱鱼,完全无关紧要。 Fixnum
是直接值,Fixnum
没有new
方法。