it-swarm.com.ru

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

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

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

66
at.

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

70
Ryan Bigg

Начиная с 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
61
John Cleary

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

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
27
Muhamamd Awais

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

view_context.my_helper_method
15
David

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

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

class YourController < ApplicationController
  include OneHelper
  include TwoHelper
 end

С уважением!

7
hyperrjas