簡體   English   中英

NoMethodError未定義方法'-@'在Controller Ruby on Rails中的NoMethodError

[英]NoMethodError undefined method '-@' NoMethodError in Controller Ruby on Rails

上下文:我從存儲庫中提取了最新代碼,並嘗試確保將要推送的更改將與該版本的代碼一起使用。 這是Ruby on Rails應用程序。 另外值得注意的是,當運行我從網絡上提取的主應用程序時,不會顯示此錯誤。 但是,如果我運行自己的分支或克隆到環境中的主分支,則對於我嘗試的每個URL總是會顯示錯誤。 這樣就對了。

問題:一旦我轉到localhost:3000,就會收到以下錯誤:

NoMethodError in HomeController#index
undefined method `-@' for #<ActionDispatch::Response:0x64fd460>

我嘗試過的事情:我在#rubyonrails IRC頻道上問了我的問題,但沒人能確定Full Trace中發生了什么(我沒有在這里發布它,因為我不確定什么是最好的方法在此處執行此操作;在代碼塊或塊引用中看起來不是很好)。 我看了我的HomeController的index方法,它的定義如下:

    def index
      @groups = @current_user.groups
      @things = Thing.where(:group_id => @groups.map{|e|e.id})
    end

我也在Google周圍搜索,沒有找到解決此問題所需的工具。

到目前為止,我學到的 -@是運算符。 假設Ruby擁有

    variable = variable + 1

許多其他語言具有:

    variable++

這是這種情況的示例: false的未定義方法“ + @”:FalseClass(NoMethodError)ruby

問題:關於如何在此處查找問題, 有人是否有其他建議? 此外,如果我可以輕松地在此處以美學上令人愉悅的方式格式化“完整軌跡”,有人會告訴我如何做嗎? 我對此不知所措:(

更新(2/8/2013):看來問題不一定存在於HomeController或home / index.html.erb視圖中。 我試圖通過有效的操作訪問任何url,並且將“ NoMethodError in ...”更改為相應的Controller#index時,也會發生相同的錯誤。

更新(2013/2/9):由於無論我嘗試導航到哪個URL,都會發生此錯誤,因此我決定在config文件夾中的route.rb文件中查找。 這次我通過紅寶石而不是命令行運行服務器,這使我更容易閱讀。 我開始查看所有吐出的內容,並發現一條有趣的行,其中包括:

["private-key looking thing"] [127.0.0.1] Started GET "/" for 127.0.0.1 at 2013-02-09 18:20:52 -0700

似乎在route.rb中存在語法錯誤(這是我目前最好的猜測)。 這並不能解釋為什么這只是在本地環境中使用相同代碼集的問題,但是我還需要解決什么?

在我瀏覽此文件時,有沒有人有任何建議的內容? 不太確定要查找有關錯誤的內容。 Rubymines的檢查工作將我所有的雙引號都轉換為單引號,並且實際上沒有什么可抱怨的。

預先感謝傑克·史密斯

我猜想它也可能是相應視圖頁面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}"

我已經解決了這個問題!

解決該問題的方法:

  1. 轉到您的寶石所在的目錄(對我來說,這是C:\\ RailsInstaller \\ Ruby1.9.3 \\ lib \\ ruby​​ \\ gems \\ 1.9.1)
  2. 刪除除捆綁器以外的所有寶石
  3. 確保從/ cache /,/ gems /和/ specifications /文件夾中刪除了gem(我剛從/ gems /文件夾中刪除了它們,並且bundle install表明它仍然可以找到gem)
  4. 運行bundle install

進一步查詢:

有人知道為什么會這樣嗎? 我不知道這時是否可以縮小是哪個gem導致了問題,因為該應用程序現在正在運行(我可以使用相應的視圖訪問所有URL)。 如果問題再次出現,我將一個接一個地刪除寶石,以找出至少一個對我造成問題的寶石。 但是,如果有人對此有任何見識,我想,更多的人將不僅僅可以得到我一個更詳盡的答案。 感謝到目前為止所提供的所有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM