2011-07-08 12 views
1

私はここで迷っています。私はかなりシンプルなことをやっているが、これで多くの問題に遭遇しているようだ。私は作品の中でまっすぐ前方のWebクローラーを持っています。人々はリクエストを投稿し、キューに送信します。彼らはキューにいただきまし照会する場合は、次のルートはスタックが深くなるまで応答するRubyアプリ

127.0.0.1:8080/requests/id/1.json

応答が(DEF) CrawlerControllerがコントローラであるアクションです。 リクエストがモデルです。相続人

ルート:

match 'requests/id/:id' => 'crawler#response' 

そして、ここでコントローラ内のデフです(私はその関連はないと思うが):

def response 
    @request = Request.find(params[:id]) 
    respond_to do |format| 
    #format.html { render :action => "new"} 
    format.json { render :json => @request.to_json } 
    end 
    end 

私は取得していますエラーがスタックレベルでは、深すぎる。

EDIT:私は、コンソール出力を見れば線21と19が行うと

CACHE (0.0ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1 
    CACHE (0.0ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1 
    CACHE (0.0ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1 
    CACHE (0.0ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1 
    CACHE (0.0ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1 
    CACHE (0.0ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1 
    CACHE (0.0ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1 
    CACHE (0.0ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1 
    CACHE (0.0ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1 
    CACHE (0.0ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1 
Completed 500 Internal Server Error in 2688ms 

SystemStackError (stack level too deep): 
    app/controllers/crawler_controller.rb:21:in `response' 
    app/controllers/crawler_controller.rb:19:in `response' 
    app/controllers/crawler_controller.rb:21:in `response' 
    app/controllers/crawler_controller.rb:19:in `response' 
    app/controllers/crawler_controller.rb:21:in `response' 
    app/controllers/crawler_controller.rb:19:in `response' 

かなり奇妙なハァッformat.jsonする@respondですか?

+0

これが別の行方不明の終了ブロックであることが判明したら私は誓います。*握りこぶし* – overtone

答えて

3

responseから名前を変更してみてください。私はresponseがRailsによって何か他のもののために使われるかもしれないと思う。

+0

が非初期化定数に変更されました。これを試してみよう。 – overtone

+0

それは何だったのですか。おもう – overtone

1

変数の名前を@requestから別のものに変更してください。私は@requestがRailsによって何か他のもののために使われるかもしれないと思う。

また、アクション名をresponseから別の名前に変更してみてください。私はresponseがRailsによって何か他のもののために使われるかもしれないと思う。

関連する問題