首页 > 解决方案 > 内部服务器错误 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

某处是否存在路由错误?我不太确定未定义的新方法对我的数组意味着什么。任何人都可以帮助解决这个问题吗?我正在按照指南进行此操作,似乎某处可能存在错误。

标签: ruby

解决方案


而不是做

pages = PAGES.new(route_name, visit_count: count) 

你应该做

view = View.new(route_name, visit_count: count) 

并返回[status, response_headers, [view.render]]


推荐阅读