Это хорошая идея оставить помощника: все в application_controller? - PullRequest
1 голос
/ 09 сентября 2011

Я работаю в компании, где унаследовал их администрацию сайта.Парень до меня не очень часто использовал помощники вида, поэтому 95% кода в этих помощниках принадлежит мне.

Я только что столкнулся с проблемой, когда у него был помощник: вся строка в его application_controller, что означаетвсе помощники доступны для всех просмотров.Я получил немного, потому что я создал метод с одним и тем же именем в двух разных помощниках, и, конечно, он занял последний вместо правильного.Это сводило меня с ума, удивляясь, как загружается помощник вида, который НИЧЕГО не имеет отношения к контроллеру, в котором я находился, и выбирается неправильный метод.

Мой вопрос: это хорошая идея оставить в вашем приложении?контроллер?Я думаю, что стандарт будет включать ТОЛЬКО помощник вида для ЭТОГО конкретного контроллера вида.Так что, если у меня есть контроллер foo и представления foo, должен быть включен только foo_helper.Не foo2_helper и foo3_helper.(Я знаю, что если мне понадобится foo2_helper или foo3_helper, вы можете добавить «helper foo2» или «helper foo3» в контроллер, но это будет по выбору, а не автоматически.)

Кажется, я не могунайти ответ, если это хорошая идея или нет.Я нашел один сайт, который сказал, что это по умолчанию, на самом деле ??

Спасибо

Ответы [ 3 ]

2 голосов
/ 09 сентября 2011

Помощники IMO в ApplicationController, в частности, означают для совместного использования во всем приложении (что, я думаю, довольно очевидно, когда я говорю это вслух).

Помощники, используемые только в представлениях одного контроллера, принадлежат этому единственному контроллеру.

Если в контроллере приложения есть не глобальные помощники, они, вероятно, находятся в неправильном месте.

0 голосов
/ 12 января 2012

Да. Это называется СУХОЙ. Это не значит, что вы должны поместить весь свой код в application_helper.rb и использовать его в любом месте вашего проекта rails, но иногда это может помочь.

0 голосов
/ 09 сентября 2011

Я храню helper :all в моем ApplicationController, потому что я назначаю своих помощников в зависимости от того, для чего я их использую, а не от контроллера.

Таким образом, вы можете повторно использовать одного и того же помощника на двух разных контроллерах.

...