微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何调试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 举报,一经查实,本站将立刻删除。