コンテキスト: リポジトリから最新のコードを取得し、プッシュしようとしていた変更がそのバージョンのコードで機能することを確認しようとしました。これは Ruby on Rails アプリケーションです。また、Web から取得したメイン アプリケーションを実行すると、このエラーが表示されないことも注目に値します。しかし、自分のブランチまたは自分の環境に複製されたメイン ブランチを実行すると、試行するすべての URL に対して常にエラーが表示されます。だからそれは私の側にあります。
問題: localhost:3000 にアクセスするとすぐに、次のエラーが表示されます。
NoMethodError in HomeController#index
undefined method `-@' for #<ActionDispatch::Response:0x64fd460>
私が試したこと: #rubyonrails IRC チャンネルで 質問しましたが、フル トレースで何が起こっているのか誰も判断できませんでした (最善の方法がわからなかったため、ここには投稿しませんでした)。ここでそれを行うには; コード ブロックまたはブロック引用ではあまりよく見えませんでした)。次のように定義されている HomeController の index メソッドを見てきました。
def index
@groups = @current_user.groups
@things = Thing.where(:group_id => @groups.map{|e|e.id})
end
私もグーグルで検索しましたが、問題を解決するために必要なものが見つかりませんでした。
これまでに学んだこと: -@ は演算子です。Ruby に次へのショートカットがあると仮定して、同様のエラーを受け取る人もいます。
variable = variable + 1
他の多くの言語には次のものがあります。
variable++
以下はその例です:未定義のメソッド `+@' for false:FalseClass (NoMethodError) ruby
質問: ここで問題を見つける方法について、他に何か提案はありますか? また、美的に満足できる方法でフォーマットされた完全なトレースをここに簡単に配置できる場合、誰かがその方法を教えてくれますか? 私はこれで途方に暮れています:(
更新 (2013 年 2 月 8 日): この問題は、必ずしも HomeController または home/index.html.erb ビューに存在するとは限りません。有効なアクションで任意の URL にアクセスしようとしましたが、"NoMethodError in..." が対応する [...]Controller#index に変更されて同じエラーが発生します。
更新 (2013 年 2 月 9 日): どの URL に移動しようとしてもこのエラーが発生するため、config フォルダー内の routes.rb ファイルを調べることにしました。今回は、コマンド ラインではなく rubymine を使用してサーバーを実行したので、少し読みやすくなりました。吐き出されたすべての情報を調べ始めたところ、次のような興味深い行があることに気付きました。
["private-key looking thing"] [127.0.0.1] Started GET "/" for 127.0.0.1 at 2013-02-09 18:20:52 -0700
routes.rb に構文エラーがあるようです (これが現時点での私の推測です)。これは、これが同じコード セットを使用するローカル環境でのみ問題になる理由を説明していませんが、他に何をしなければならないのでしょうか?
私がこのファイルをふるいにかけている間、注意すべきことを提案している人はいますか? エラーに関する限り、何を探すべきかよくわかりません。Rubymines のインスペクションは、すべての二重引用符を単一引用符に変換し、他に文句を言う必要はありません。
よろしくお願いします、ジェイク・スミス