我有一个在Ubuntu虚拟机和几个不同安装上启动并运行的rails应用程序。
我有一台新计算机,在安装了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
答案 0 :(得分:2)
您的vendor
目录有一堆符号链接到/usr/share/rails
。这可能就是为什么它在一些服务器上工作(因为在那些服务器上那些符号链接正在工作)而不在其他服务器上。
你的助手不能正常工作,因为他们应该在模块内,所以app/helpers/ellided_name.rb
应该有:
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在我的推荐中发现了一个空白,我只是在这里为在谷歌中发现这个的人添加它 - 他还需要在文件名中添加_helper
后缀,以及在文件中添加module
包装器,他必须将app/helpers/ellided_name.rb
更改为app/helpers/ellided_name_helper.rb
并且(他没有说,但我确定)需要反映的模块名称这个,EllidedNameHelper
而不仅仅是EllidedName