私のアプリケーションでは、次の2つのルートがあります
get '/' do
...
haml :home
end
と
get '/:id' do
@variable = Something.get(params[:id])
somethingelse = @variable.some_method
...
haml :show
end
shotgun
localhost:9393(shotgunのデフォルトのアドレスとポート)を使用してアプリケーションを実行すると、すべてが正常に実行されます。つまり、ログにエラーメッセージは表示されません。
サーバーを通常どおりに実行し(シンもインストールされています)、ruby app.rb
localhost:4567にアクセスするとsome_method
、NilClass...のメソッド""がないというメッセージが表示されid
ます。
Sinatraのドキュメントでは、ルートは順序どおりに呼び出されると言われているため、2番目のルートに出くわすことさえありません。私が間違っている?
テストとして、2番目のルートをに変更しました'/:id/show'
が、エラーは発生していません。
どちらの場合も(つまり、ショットガンと通常のサーバーの両方で)、Webサイトは完全にレンダリングされました。つまり/
、ビューでは正しくhome.hamlであり、show.hamlではありませんでした。したがって、エラーはログファイルにのみ存在していました。真実@variable.some_method
は、ビューで直接呼び出され、ブラウジング中に/
からエラーが発生しました/show.haml
。
何をしますか?このエラーが発生しないようにするためにすべきことはありますか?露骨に無視すべきですか?
編集:出力とコードの関連部分はここで見つけることができます:https ://gist.github.com/4585374