语境:
我从存储库中提取了最新的代码,并尝试确保我即将推出的更改将与该版本的代码一起使用.这是一个
Ruby on Rails应用程序.另外值得注意的是,在运行我从网络上提取的主应用程序时,此错误不会显示.但是,如果我运行我的分支或克隆到我的环境的主分支,我会尝试的每个网址都会出现错误.所以它就在我的最后.
问题:
一旦我转到localhost:3000,我收到以下错误:
NoMethodError in HomeController#index
undefined method `-@' for #<ActionDispatch::Response:0x64fd460>
我试过的:
我已经在#rubyonrails IRC频道上提出了我的问题,没有人能够通过Full Trace确定发生了什么(我没有在这里发布,因为我不确定这里最好的方法是什么;它在代码块或块引用中看起来不太好.我查看了我的HomeController的索引方法,其定义如下:
def index
@groups = @current_user.groups
@things = Thing.where(:group_id => @groups.map{|e|e.id})
end
我也用Google搜索,但没有找到我需要解决的问题.
我到目前为止学到了什么:
– @是一个操作符.假设Ruby有快捷方式,有些人可能会收到类似的错误
variable = variable + 1
很多其他语言都有:
variable++
以下是该案例:Undefined method `+@’ for false:FalseClass (NoMethodError) ruby
题:
有没有人对如何在这里找到问题有任何进一步的建议?此外,如果我可以轻松地将完整跟踪放在这里,以美学上令人愉悦的方式格式化,有人会告诉我如何?我对此感到茫然:(
更新(2013年2月8日):
似乎问题不一定存在于HomeController和home / index.html.erb View中.我试图使用有效的操作访问任何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检查的东西将我的所有双引号转换成单引号,并没有任何其他可抱怨的东西.
提前致谢,
杰克史密斯
最佳答案 我猜它可能是相应的视图页面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}"