如何调试Rails中未定义的辅助方法

问题描述

| 我有一个Rails应用程序,它已在Ubuntu虚拟机和几种不同的安装程序上启动并运行。 我有一台新计算机,并且在安装Ruby和Rails(使用rvm)之后,我可以运行该应用程序,但是在访问视图时找不到助手功能
helper :all
行在
ApplicationController
中。 我很确定这是我的环境而不是应用程序的问题。是否有缺少的宝石会导致此问题? 您能推荐我可以用来调试此问题的任何步骤吗?
MacBook-Air:cyberdojo mike$ ruby -v
ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin10.7.0]
MacBook-Air:cyberdojo mike$ rails -v
Rails 2.3.11
我得到的实际错误是这样的:
NoMethodError in Dojo#create

Showing app/views/dojo/create.html.erb where line #62 raised:

undefined method `ellided_name\' for #<ActionView::Base:0x101fabf70>
Extracted source (around line #62):

59:        value=\"<%=@dojo.name-%>\" />
60: 
61: <h1 title=\"<%= @dojo.name-%>\">   
62:   <%= ellided_name(@dojo.name,40) %>
63: </h1>
64: 
65: <table align=\"center\">
可以在这里查看源代码:https://github.com/meekrosoft/cyberdojo     

解决方法

        您的
vendor
目录有许多到
/usr/share/rails
的符号链接。这可能就是为什么它在某些服务器上工作的原因(因为在那些服务器上这些符号链接正在工作)而不在其他服务器上工作。 您的助手没有工作,因为他们应该在模块中,所以ѭ6应该具有:
module EllidedName
  # code you have in the file now
end
我猜想某些旧版本的Rails(服务器上的
/usr/share/rails
版本)允许使用非模块语法。 基于
config/environments.rb
中的2.1.0版本的警告已存在很长时间,如果
/usr/share/rails
版本的版本接近2.1,则这将是您尝试运行此应用程序时遇到的许多问题中的第一个-在2.3中。 更新资料 OP在我的建​​议中发现了一个空白,我将其添加到在Google中找到它的任何人-他还需要在文件名中添加
_helper
后缀,以及在他拥有的文件中添加
module
包装器将
app/helpers/ellided_name.rb
更改为
app/helpers/ellided_name_helper.rb
,(他没有说,但我确定)需要反映这一点的模块名称,因此
EllidedNameHelper
而不是
EllidedName