4

コンテキスト: リポジトリから最新のコードを取得し、プッシュしようとしていた変更がそのバージョンのコードで機能することを確認しようとしました。これは 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 ファイルを調べることにしました。今回は、コマンド ラインではなく ruby​​mine を使用してサーバーを実行したので、少し読みやすくなりました。吐き出されたすべての情報を調べ始めたところ、次のような興味深い行があることに気付きました。

["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 のインスペクションは、すべての二重引用符を単一引用符に変換し、他に文句を言う必要はありません。

よろしくお願いします、ジェイク・スミス

4

2 に答える 2

1

問題を修正しました!

それを修正したもの:

  1. gem があるディレクトリに移動します (私にとっては C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1 でした)。
  2. bundler 以外のすべての gem を削除します。
  3. /cache/、/gems/、および /specifications/ フォルダーから gem を必ず削除してください (最初に /gems/ フォルダーからそれらを削除したところ、bundle installまだ gem が見つかることがわかりました)。
  4. 走るbundle install

さらなるお問い合わせ:

なぜこれが機能したのか、誰にも分かりますか?アプリは現在動作しているため、この時点で問題の原因となっている宝石を絞り込むことができるかどうかはわかりません (対応するビューですべての URL にアクセスできます)。問題が再び発生した場合は、宝石を 1 つずつ削除して、少なくともどの宝石が問題を引き起こしているかを突き止めます。しかし、誰かがこれについて洞察を持っている場合、より詳細な回答は、私だけでなく多くの人に高く評価されると思います. これまで助けてくれたすべての人に感謝します!

于 2013-02-13T23:48:31.657 に答える
1

対応するビュー ページ Home/index.html.haml の構文エラーである可能性もあると推測しています。変数呼び出しの前に意図しない「-」があると思われます。Railsプラットフォームで同様のシナリオをシミュレートしようとしましたが、ブラウザで次のページが表示されました

undefined method `-@' for false:FalseClass

正しいコード行

%h1 All Movies
= "filtervalue=#{@isFilterOld}"
= "Sortvalue=#{@isSortOld}"

エラーをシミュレートするために編集されました( isFilterOld 変数の前の - を観察してください)

   %h1 All Movies
    = "filtervalue=#{-@isFilterOld}"
    = "Sortvalue=#{@isSortOld}"
于 2013-02-08T05:40:50.510 に答える