Ответ 1
не уверен, в чем проблема, но вы можете решить эту проблему, включив application_helper в контроллер
class TrunksController
include ApplicationHelper
end
В режиме просмотра:
<%= @controller.rxtrnk %>
Я определил пользовательский метод в файле 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>
Я знаю, что это очень новичок вопрос, но я не мог найти решение от googling:( Спасибо за вашу помощь.
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
не уверен, в чем проблема, но вы можете решить эту проблему, включив application_helper в контроллер
class TrunksController
include ApplicationHelper
end
В режиме просмотра:
<%= @controller.rxtrnk %>
Вы должны убедиться, что помощник, содержащий метод, который вы хотите вызвать, включен текущим контроллером (в вашем случае вы хотите включить ApplicationHelper). Это контролируется с помощью метода helper
в верхней части контроллеров.
Многие разработчики Rails по умолчанию включают всех помощников, чтобы не думать об этом. Для этого добавьте "helper :all
" в начало вашего ApplicationController:
class ApplicationController < ActionController::Base
helper :all
end
Вы также можете выбрать только ApplicationHelper:
class ApplicationController < ActionController::Base
helper ApplicationHelper
end
ваш TrunksController может не распространяться из ApplicationController. Контроллер приложения включает помощник приложения, поэтому, если вы расширяете его форму контроллера, вы должны иметь доступ к этим методам.
Начало вашего контроллера должно быть примерно таким:
class TrunksController < ApplicationController