如何解决如何调试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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。