gpt4 book ai didi

ruby - 类内的路由处理程序

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:43 25 4
gpt4 key购买 nike

我有一个 Sinatra 应用程序设置,其中大部分逻辑在各种类中执行,post/get 路由实例化这些类并调用它们的方法。

我在考虑将 post/get 路由处理程序放在类本身中是否会是一个更好的结构。

无论如何,我想知道这是否可能。例如:

class Example
def say_hello
"Hello"
end

get '/hello' do
@message = say_hello
end
end

如果不修改以上内容,Sinatra 会说 SinatraApplication 对象上没有方法 say_hello

最佳答案

你只需要继承Sinatra::Base:

require "sinatra/base"

class Example < Sinatra::Base
def say_hello
"Hello"
end

get "/hello" do
say_hello
end
end

您可以使用 Example.run! 运行您的应用。


如果您需要在应用程序的各个部分之间进行更多分离,只需制作另一个 Sinatra 应用程序即可。将共享功能放入模型类和助手中,并使用 Rack 一起运行您的所有应用程序。

module HelloHelpers
def say_hello
"Hello"
end
end

class Hello < Sinatra::Base
helpers HelloHelpers

get "/?" do
@message = say_hello
haml :index
end
end

class HelloAdmin < Sinatra::Base
helpers HelloHelpers

get "/?" do
@message = say_hello
haml :"admin/index"
end
end

config.ru:

map "/" do
run Hello
end

map "/admin" do
run HelloAdmin
end

安装 Thin ,并使用 thin start 运行您的应用。

关于ruby - 类内的路由处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17353317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com