我在application_helper.rb文件中定义了一个自定义方法,如下所示:
def rxtrnk(line)
rxTRNK = /\w{9,12}/m
trnks = Array.new
i = 0
while i <= line.size
if line[i].match(rxTRNK)
trnks[i] = line[i].scan(rxTRNK)
end
i += 1
end
return trnks
end
然后我尝试从这样的视图中调用它:
<% @yo = rxtrnk(@rts)%>
但我得到一个这样的错误页面:
NoMethodError in TrunksController#routesperswitch
undefined method `rxtrnk' for #<TrunksController:0x7f2dcf88>
我知道这是一个非常新手的问题,但我无法通过谷歌搜索找到解决方案:( 谢谢你的帮助
edit / here是完整的application_helper.rb
module ApplicationHelper
def rxtrnk(line)
rxTRNK = /\w{9,12}/m
trnks = Array.new
i = 0
while i <= line.size
if line[i].match(rxTRNK)
trnks[i] = line[i].scan(rxTRNK)
end
i += 1
end
return trnks
end
end
答案 0 :(得分:39)
不确定是什么问题,但您可以通过在控制器中包含application_helper来解决这个问题
class TrunksController
include ApplicationHelper
end
在视图中调用:
<%= @controller.rxtrnk %>
答案 1 :(得分:19)
您应该确保包含要调用的方法的帮助程序包含在当前控制器中(在您要包含ApplicationHelper的情况下)。这是在控制器顶部使用the "helper
" method控制的。
许多Rails开发人员默认包含所有帮助程序,以避免考虑这一点。为此,将“helper :all
”添加到ApplicationController的顶部:
class ApplicationController < ActionController::Base
helper :all
end
您也可以选择仅包含ApplicationHelper:
class ApplicationController < ActionController::Base
helper ApplicationHelper
end
答案 2 :(得分:6)
你的TrunksController可能没有从ApplicationController扩展。应用程序控制器包含应用程序助手,因此如果您将控制器扩展为应用程序,则应该可以访问这些方法。
控制器的启动应该是:
class TrunksController < ApplicationController