繁体   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