2011-06-02 4 views
0

Эй, ребята, у меня есть два контроллера, X и Y:обмена частных методов между контроллерами

В X, у меня есть: before_filter для частного метода, Foo.

У меня также есть следующее заявление в верхней части контроллера X.

helper_method: Foo

В контроллер У меня есть: before_filter для частного метода, бар. В баре я вызываю foo. Но, по-видимому, это недопустимо, так как я получаю неопределенную локальную переменную или ошибку метода. Я бы подумал, что my: helper_method декларация должна позволить foo использоваться в других контроллерах.

Вообще говоря, как я могу достичь вызова foo в контроллере Y? Есть ли способ сохранить конфиденциальность? Если нет, то как достигается (при соблюдении хороших принципов дизайна), если foo не является частным?

Спасибо!

ответ

1

Если вам нужно foo в нескольких контроллерах, тогда вы должны поместить его в свой базовый контроллер приложения в качестве защищенного метода. Это даст вам доступ к нему там, где вам это нужно, оставив его вне публичного интерфейса.

В качестве альтернативы вы можете поставить foo в модуль и включить его по мере необходимости.

Какой подход вы принимаете, зависит от ваших конкретных обстоятельств.

Смежные вопросы