gpt4 book ai didi

ruby - 如何在 Sinatra Controller 中使用参数

转载 作者:行者123 更新时间:2023-12-04 15:31:50 24 4
gpt4 key购买 nike

我正在尝试用 Rails 风格编写 Sinatra:

#in app.rb
get '/' do
# params request and response are accessible here
SomeController.new.some_method
end

我无法访问 Controller 中的paramsrequestresponse:

  class SomeController < Sinatra::Base
def some_method
#params are nil here
end
end

我可以通过将 app.rb 作为参数传递来实现,但我希望它的行为像 Rails。

最佳答案

我要做的是制作一个接受参数/请求/响应作为初始化参数的基本 Controller :

require 'sinatra'
require 'byebug'

class BaseController
attr_reader :params, :request, :response
def initialize(sinatra_app)
@params = sinatra_app.params
@request = sinatra_app.request
@response = sinatra_app.response
end
end

class SomeController < BaseController
def some_method
{
params: params.class.name,
request: request.class.name,
response: response.class.name,
}.to_json
end
end

get '/' do
SomeController.new(self).some_method
end

然后测试:

$ curl localhost:4567

响应是:

{
"params":"Sinatra::IndifferentHash",
"request":"Sinatra::Request",
"response":"Sinatra::Response"
}

显示所有 3 个变量在当前上下文中可用

关于ruby - 如何在 Sinatra Controller 中使用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61129936/

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