Недавно я столкнулся с сложной ситуацией, связанной с помощниками рельсов. Ситуация следующая:Как работает Rails View Helper
У меня есть контроллер как Feature1::Feature1.1::Feature1.1.1Controller
. Feature1.1
также включает другие контроллеры, как Feature1.1.2Controller
, Feature1.1.3Controller
...
Так конечно, связанные просмотреть хелперов в папке app/helpers/feature1/feature1.1/...
Теперь реальная проблема я столкнулся в том, что несколько помощников для feature1.1
включает в себя такое же имя метода method1
с соответствующим определением.
мне было интересно, как рельсы идентифицирует все эти помощник, как я заметил, что method1
т.е. вызывается в представлении для контроллера feature1.1.1
использует определение method1
т.е. написанные для контроллера feature1.1.2
.
Так рельсы рассматривают все вспомогательные модули, определенные в одной папке, как один?
feature1/feature1.1/feature1.1.1/index
Я делаю вызов метода для method1
.
Я использую rails3
Где вы включаете помощников вида? – David
Я использую настройку по умолчанию, которая включает в себя все вспомогательные по умолчанию – Swaps
Конечно. Чтобы получить доступ к помощникам в контроллерах, вам необходимо включить, но из представлений, которые они доступны на глобальном уровне. Я не думаю, что есть легкое решение вашего затруднительного положения, похоже, вам придется отрисовывать помощников в слое OO, используя драгоценный камень, такой как [Ячейки] (https://github.com/apotonick/cells) - проверьте out https: // apotonick.wordpress.com/2011/10/05/rails-misapprehensions-helpers-are-shit/ для углубленного обзора этой проблемы. – David