因此,当我运行ruby server.rb并转到本地主机时,会出现此错误。
内部服务器错误 [“ / home”,“ / admin”]的未定义方法'new':Array WEBrick / 1.3.1(Ruby / 2.4.1 / 2017-03-22)位于localhost:8080
在这里输入代码
require 'rack'
require_relative 'view'
require_relative 'route'
class App
PAGES = %w{ /home /admin}
def call(env)
response_headers = {}
request_cookies = Rack::Utils.parse_cookies(env)
unless request_cookies["session_key"]
Rack::Utils.set_cookie_header!(response_headers, "session_key", Time.now.to_f)
end
count = request_cookies["session_count"].to_i
count += 1
Rack::Utils.set_cookie_header!(response_headers, "session_count", count)
route_name = Route.new(env).name
pages = PAGES.new(route_name, visit_count: count)
[status, response_headers, [pages.render]]
end
end
Rack::Handler::WEBrick.run App.new
class Route
ROUTES = {
"/home" => :home,
"/admin" => :admin
}
def initialize(env)
if(env["REQUEST_METHOD"] == "GET")
@name = ROUTES[env["PATH_INFO"]]
end
end
def name
@name || "404"
end
end
class View
def initialize(page, data = {})
@data = data
@page = page
file = File.join(File.dirname(__FILE__), "./pages/#{page}.html.erb")
@page = File.read(file)
end
def visit_count
@data[:visit_count]
end
def render
ERB.new(@page).result(binding)
end
end
某处是否存在路由错误?我不太确定数组的new未定义方法意味着什么。谁能帮助解决这个问题? 我正在按照指南进行操作,似乎某个地方可能有错误。
答案 0 :(得分:0)
代替
pages = PAGES.new(route_name, visit_count: count)
您应该做
view = View.new(route_name, visit_count: count)
并返回[status, response_headers, [view.render]]