ruby - 内部服务器错误 ruby 未定义方法
问题描述
所以当我运行 ruby server.rb 并转到我的本地主机时,我得到了这个错误。
["/home", "/admin"] 的内部服务器错误未定义方法 `new':Array WEBrick/1.3.1 (Ruby/2.4.1/2017-03-22) at localhost:8080
这是代码
服务器.rb
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
路由.rb
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
视图.rb
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
某处是否存在路由错误?我不太确定未定义的新方法对我的数组意味着什么。任何人都可以帮助解决这个问题吗?我正在按照指南进行此操作,似乎某处可能存在错误。
解决方案
而不是做
pages = PAGES.new(route_name, visit_count: count)
你应该做
view = View.new(route_name, visit_count: count)
并返回[status, response_headers, [view.render]]
推荐阅读
- jquery - 选择正确的itemID jquery
- google-contacts-api - Google 联系人 API 返回 Invalid XML Document 错误
- android - 在人像模式下录制视频时出现方向问题android grafika
- authentication - asp.net core cookie 身份验证滑动过期不起作用
- objective-c - 从 Objective C 到 Swift 的代码转换
- javascript - Ionic 框架使 ios 设备中的 ng-href 无法使用“在新选项卡中打开”选项
- json - 如何在jmeter中使用json响应令牌
- node.js - 节点:无法使用 express 在 gRPC 回调中调用 continuation-local-storage 键
- android - 当自定义模型有一个自定义模型类型列表的子项时,Android Parcelable 不会传输所有数据
- android - Activity 与 RecyclerView 适配器通信(片段中的 Recyclerview)