只是另一个“为什么是这样”的问题:我注意到私有助手方法仍然可以在视图内访问。为什么?有没有一种方法可以防止这种情况发生(例如,当只有从另一个助手中调用的辅助方法时)?为什么仍然可以在视图中访问私有助手方法?
11
A
回答
21
帮助者是modules that get mixed in的意见。这意味着帮手中的公共,受保护和私人方法成为公众,保护和私人方法的意见。
我不认为你实际上可以从视图中隐藏辅助方法。你需要做一些事情,比如在助手中实例化一个助手类,然后将调用委托给它 - 听起来像它可能会很快变得杂乱无章。 :)
0
助手基本上都是小的代码片段,可以在你的意见被调用,以帮助您保持代码的DRY - 即任何要经常重复的代码最可能被移动到一个帮手。
使用助手很简单,每个控制器有它自己的帮助文件,也可以编写应用程序的辅助文件的帮手,如果将整个应用程序中使用。
例如 - 见http://paulsturgess.co.uk/articles/49-using-helper-methods-in-ruby-on-rails
+0
https://web.archive.org/web/20130127041747/http://paulsturgess.co.uk/articles/49-using-helper-methods-in-ruby-on-rails – danuker
相关问题
- 1. 为什么在Cocoa中仍然可以访问卸载的类?
- 2. 访问视图助手方法
- 3. 私有方法可访问
- 4. 为什么我可以在C++从外部访问私有方法?
- 5. .java文件中的包私有类 - 为什么可以访问?
- 6. 为什么可以从不同的实例访问“私有”方法?
- 7. 为什么Java的反映可以访问私有字段/方法?
- 8. 为什么成员函数仍然可以被访问,即使它被声明为“私有”?
- 9. 在Sinatra视图中访问OmniAuth助手
- 10. Azure blob容器仍然可以直接访问,即使设置为私有后也可以访问
- 11. 为什么在访问私有方法时使用它?
- 12. 我写了Accessors和Mutators方法,但仍然无法访问私有变量!为什么?
- 13. 为什么我可以访问:number_to_currency,但不是:在我的视图中标题为助手?
- 14. 为什么禁用的项目仍然可以在列表视图中检查
- 15. 为什么可以从属性访问私有常量字段?
- 16. 混淆为什么可以访问私有变量?
- 17. 为什么==超载可以访问参数的私有成员
- 18. 为什么序列化可以访问私有构造函数?
- 19. 有什么办法可以在Python中访问模块的私有函数吗?
- 20. 使javascript私有方法可以访问它的公共方法
- 21. 私人会员为什么可以通过方括号表示法访问?
- 22. Lambda可访问私有方法
- 23. MVC:有什么方法可以在视图中创建包?
- 24. zend视图助手有多种方法?
- 25. 为什么在compareTo中可以访问某个类的私有成员?
- 26. 为什么我可以在父级php类中访问私有财产?
- 27. 在C中访问私有方法#
- 28. 为什么大家仍然在使用渲染方法构建父子视图?
- 29. Java EE 6中的@Remote是否可以访问私有方法?
- 30. 访问私有方法
谢谢。就是这样。 :-) –