Подтвердить что ты не робот

Где использовать методы Ruby для Rails-контроллеров?

У меня есть некоторые методы Ruby, которым нужны определенные (или все) контроллеры. Я попытался положить их в /app/helpers/application_helper.rb. Я использовал это для методов, которые будут использоваться в представлениях. Но контроллеры не видят этих методов. Есть ли другое место, куда я должен поместить их или мне нужно получить доступ к этим вспомогательным методам по-разному?

Использование новейших стабильных Rails.

4b9b3361

Ответ 1

Вы должны определить метод внутри ApplicationController.

Ответ 2

Для 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

Ответ 3

вы должны определить методы внутри контроллера приложения, если у вас есть несколько методов, то вы можете выполнить следующие действия

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

Ответ 4

Вы можете вызвать любые вспомогательные методы из контроллера с помощью view_context, например

view_context.my_helper_method

Ответ 5

Ответ Райана Бигга хороший.

Другим возможным решением является добавление помощников к вашему контроллеру:

class YourController < ApplicationController
  include OneHelper
  include TwoHelper
 end

С наилучшими пожеланиями!