2016-04-14 6 views
0

私はシナトラで小さなプログラムを作り、私はdiynamic URIで、投稿のいくつかの動的な呼び出しをperfomしたかったので、私はこのようなConnexionのクラスを作るよ:Ruby/Sinatra - ラムダクラスの投稿を呼び出すにはどうすればいいですか?

class Connexion 
    def initialize(path) 
    @path = path 
    end 

    def sinatraPost 
    post "/#{@path}" do 
    # some code 
    end 
    end 
end 

しかし、私は打ち上げだときsinatraPost、私はこのエラーがあります:

undefined method `post' for #<Connexion:0x000000026206b8> (NoMethodError) 

私のクラスでsinatra postメソッドを呼び出すにはどうしたらいいですか?

EDIT:OK!だから私の戦略を変えて、私は次のコードを持っています:

class Webhook < Sinatra::Base 

get '/:name' do 
    # compare with names array 
end 
end 

Webhook.run! 

ありがとうございました!

+0

シナトラの 'post'はDSLであり、呼び出されることは意図されていません。 – mudasobwa

+0

'POST'コールをしたいのですか、それとも他の人からそれを受け取りますか?あなたが最初のものを望むように見えます... – Uzbekjon

+0

ホー..私はそれを知らなかった、どうすればDSLで同じことをすることができますか? – Equinox

答えて

0

これは間違った方向に向かっているようです。アプリをに設定してのPOSTリクエストを受け取るには、コントローラにルーティングロジックが必要です。シナトラコントローラは、通常、次のようになります。あなたはモジュラーアプリを使用している場合は、アプリを持っているしたいと思う

require 'sinatra' 

get '/route1' do 
    # do stuff 
end 

post '/route2' do 
    # do stuff 
end 

Sinatra::Baseから継承します。詳細については、Sinatra docsを参照してください。

を投稿すると、投稿リクエストとは異なり、Sinatraメソッドに依存しません。

require 'net/http' 

uri = URI("http://google.com") 
headers = {} 
http = Net::HTTP.new(uri.host, uri.port) 
request = Net::HTTP::Post.new(uri.request_uri, headers) 
response = http.request(request) 

などです。がんばろう!

関連する問題