Ответ 1
Вы должны определить метод внутри ApplicationController
.
У меня есть некоторые методы Ruby, которым нужны определенные (или все) контроллеры. Я попытался положить их в /app/helpers/application_helper.rb
. Я использовал это для методов, которые будут использоваться в представлениях. Но контроллеры не видят этих методов. Есть ли другое место, куда я должен поместить их или мне нужно получить доступ к этим вспомогательным методам по-разному?
Использование новейших стабильных Rails.
Вы должны определить метод внутри ApplicationController
.
Для Rails 4, проблемы - это путь. Здесь есть достойная статья http://richonrails.com/articles/rails-4-code-concerns-in-active-record-models
В сущности, если вы посмотрите в свою папку с контроллерами, вы увидите папку с проблемами. Создайте там модуль в этих строках
module EventsHelper
def do_something
end
end
Затем в контроллер просто включите его
class BadgeController < ApplicationController
include EventsHelper
...
end
вы должны определить методы внутри контроллера приложения, если у вас есть несколько методов, то вы можете выполнить следующие действия
class ApplicationController < ActionController::Base
helper_method :first_method
helper_method :second_method
def first_method
... #your code
end
def second_method
... #your code
end
end
Вы также можете включить вспомогательные файлы, как показано ниже.
class YourController < ApplicationController
include OneHelper
include TwoHelper
end
Вы можете вызвать любые вспомогательные методы из контроллера с помощью view_context
, например
view_context.my_helper_method
Ответ Райана Бигга хороший.
Другим возможным решением является добавление помощников к вашему контроллеру:
class YourController < ApplicationController
include OneHelper
include TwoHelper
end
С наилучшими пожеланиями!