Почему доступ к закрытым вспомогательным методам по-прежнему возможен во взглядах?

Еще один вопрос "почему так": я заметил, что к частным вспомогательным методам по-прежнему можно получить доступ в представлениях. Почему так? И есть ли способ предотвратить это (например, когда у вас есть вспомогательные методы, которые следует вызывать только из другого помощника)?

Ответ 1

Помощники - это модули, которые смешиваются в представлениях. Это означает, что общедоступные, защищенные и частные методы в помощнике становятся общедоступными, защищенными и частными методами в представлениях.

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

Ответ 2

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

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

например - см. http://paulsturgess.co.uk/articles/49-using-helper-methods-in-ruby-on-rails