Sinatra App - 分离关注点

Sinatra App - Separating Concerns

可能是一些非常基本的东西,但我希望能够将我的 Sinatra 路由与控制器分开。我的 routes.rb:

中有这段代码
require 'sinatra/base'

class Server < Sinatra::Base
  get '/' do
   Action.index
  end
end

这是我的controller/server.rb

class Action
  def sef.index
     @user = User.new("Abiodun Shuaib")
     haml: index
  end
end

它给出了错误undefined method 'haml' in Action:Class

我该如何解决这个问题?

您正在尝试访问 class 操作中的方法 haml。它根本不包含它。 例如,您可以这样做:

class Server
  def index
    @user = User.new("Abiodun Shuaib")
    haml :index
  end
end

通过这样做,您将添加到服务器方法索引。

或者你也可以这样做(这叫做Mixin):

module ActionNew
  def index
    @user = User.new("Abiodun Shuaib")
    haml :index
  end
end

class Server < Sinatra::Base
  include ActionNew
  get '/' do
    index
  end
end