правильное использование помощников в ruby ​​на рельсах - PullRequest
1 голос
/ 02 марта 2010

Похоже, вы не можете использовать помощника в контроллере, даже если они оба принадлежат к одному классу. Например: XYZHelper и XYZController ...

У меня сложилось впечатление, что если префикс тот же "XYZ", то метод в помощнике можно использовать в контроллере и в представлении, но я думаю, что это не так.

Итак, как мне удалить некоторые общие функции из контроллера и поместить их в помощник. Я хочу поместить этот кусок кода в помощник, потому что другие контроллеры могут использовать его. Каков наилучший способ приблизиться к этому.

Спасибо, Джай.

Ответы [ 2 ]

1 голос
/ 02 марта 2010

Есть несколько способов поделиться кодом между контроллерами:

  1. Контроллер приложения: если рассматриваемый код является действием / методом, который должен быть в контроллере, но может использоваться несколькими контроллерами (или всеми ними), то это может быть место для его размещения .

  2. каталог 'lib'. просто место общего назначения для размещения кода, которым нужно делиться.

  3. Поместите это в модель. Это может или не может быть применимо, но стоит хорошенько взглянуть на код, который вы пытаетесь переместить, и подумать, имеет ли он смысл в модели (вместо контроллера или случайного класса / модуля в lib) ,

0 голосов
/ 02 марта 2010

Следуйте инструкциям Pete. Если вам все еще нужно выставить методы, сделайте следующее:

Добавьте методы в класс ApplicationController и зарегистрируйте методы как вспомогательные методы, вызвав helper_method.

class ApplicationController < ActionController::Base

  helper_method :foo, :bar

private

  def foo
   "foo"
  end 

  def bar
   "bar"
  end 
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...