Rails - использование набора функций для вида, контроллера и модели - PullRequest
0 голосов
/ 23 мая 2010

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

ОБНОВЛЕНИЕ: Это на самом деле вопрос разработки программного обеспечения.Я хочу понять, почему некоторые «удобные» вещи не разрешены в рельсах, и я подозреваю, что это именно потому, что они не хотят, чтобы мы это делали

Ответы [ 2 ]

1 голос
/ 23 мая 2010

Это, вероятно, на самом деле плохая практика. Вероятно, было бы лучше вместо этого всегда работать с массивами и хэшами в ваших контроллерах и моделях и при необходимости преобразовывать их в представление в альтернативу.

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

Просмотреть глобальные помощники можно в: helpers / application_helper.rb

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

def Something
  ....
  hashData = @template.helper(arrayData)
end

Вызов помощников в модели - ДЕЙСТВИТЕЛЬНО плохая идея, в этом нет никакого смысла.

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

0 голосов
/ 23 мая 2010

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

...