helper主要是帮助视图尽可能将代码从视图中隔离出来, 并提高视图之间代码的可重用性. 基于此, rails为我们做了一些"连接"工作:
- 每一个controller都对应一个helper module,例如对应UserController的是UserHelper, rails内部做了一些连接工作,使得默认每个controller下的所有视图都可以访问相应helper 的方法.
- rails内置一个全局helper:ApplicationHelper, rails内部做了一些连接工作,使得默认“所有controller”下的视图都可以访问ApplicationHelper下 的方法.
上面两条有时容易让人产生迷惑:
- 对于上面的第一条, 是不是每个controller本身也可以默认访问相应helper 的方法? 答案是不可以. 因为上面提到的helper是针对“视图”(而不是controller)提高代码隔离和重用的帮手, 所以默认只有视图才能访问到相应的helper的方法. 但是如果你有充分的理由要在controller中访问helper的方法, 你可以自己做:
ruby 代码
- class UserController < ApplicationController
- include UserHelper
- end
- 同理, 对于上面的第二条, 是不是所有controller也可以默认访问ApplicationHelper 的所有方法?答案同样是不可以,原因同上.如果一定要这么做,因为所有的controller都继承ApplicationController, 所以可以这样:
ruby 代码
- class ApplicationController < ActionController::Base
- include ApplicationHelper
- end
有时我们可能想将某个controller的helper下的一些方法共享给其他controller,比如想将UserHelper下的一些方法共享给PhotoController下的所有视图, 其中一种方案是将UserHelper下的方法放到ApplicationHelper中, 这样所有的controller下的视图都能访问到这些方法.另外两种方案如下:
- PhotoController include UserHelper:
ruby 代码
- class PhotoController < ApplicationController
- include UserHelper
- end
- 使用helper方法
ruby 代码
- class PhotoController < ApplicationController
- helper :user
- end
这里容易使人产生迷惑的是这两种方法有什么不同:第一中方案会使PhotoController 和 其下的所有视图都能访问UserHelper的方法;而第二种方案仅会使PhotoController的所有视图能访问UserHelper的方法, 而PhotoController本身则不能。
分享到:
相关推荐
XMLHelper XMLHelper XMLHelper
xpath-helper
MavenRunHelper
用于C#连接数据库,CSDN上找的两个MySQLHelper类,都挺好用,分享一下
使用火狐插件Video DownloadHelper下载时需要安装合作应用,点击链接打不开,显示建立连接失败,连接到 www.downloadhelper.net 时发生错误。本资源提供下载的合作应用安装包。
最好用的 MysqlHelper.cs,Mysql Helper 本人多次改进和调整,处理了MySql.Data.dll 中的多个bug导致的程序异常,执行快速,使用方便。【来自金花工具】
oraclehelper 数据访问类oraclehelper 数据访问类oraclehelper 数据访问类oraclehelper 数据访问类
C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net ...
C# HttpClientHelper(HttpClient工具类) 包含 同步/异步请求 返回 string/泛型类型/Xml 及一个单例模式 的 SingleHelper 适合做爬虫
webdriver-helper安装包,whl版本
C# XmlHelper XmlHelper帮助类
Chrome浏览器插件 VideoDownloadHelper 视频下载插件,经测可以除分钟限制破解版,请放心下载
C#下的各种helper类的集合,放在一个可执行的vs项目里,具体有string,ftp,file,excel,md5,datatable,datareader,xml,enum等等
软件介绍: idea Maven Helper的本地离线安装包,这个能够解决idea插件无法在线安装的问题。IDEA在线安装Maven Helper插件有时候会很慢,需要先将下载的ZIP压缩包解压后再使用。
ip helper code,anytao! Anytao.IPHelper.exe
c++ helper
oraclehelper
iphelper库调用示例,iphelper所有功能
MysqlHelper.zip
Video-download-helper Video DownloadHelper的合作安装应用 No such native application net.downloadhelper.coapp