Если у меня есть функция, которую я использую как в контроллере, так и в представлениях, куда мне ее поместить? - PullRequest
0 голосов
/ 05 августа 2010

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

Ответы [ 3 ]

4 голосов
/ 05 августа 2010

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

helper_method :shared_function
0 голосов
/ 05 августа 2010

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

0 голосов
/ 05 августа 2010

Я на самом деле думаю, что модуль - это лучший способ поделиться кодом между контроллерами. Хелперы хороши, если вы хотите поделиться кодом между представлениями. Помощники - это в основном прославленные модули, поэтому, если вам не нужен доступ на уровне просмотра, я предлагаю разместить модуль в вашей папке lib.

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

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

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