2007-10-10
澄清对helper的一些错误认识
关键字: helper
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
- PhotoController include UserHelper:
ruby 代码
- class PhotoController < ApplicationController
- include UserHelper
- end
- 使用helper方法
ruby 代码
- class PhotoController < ApplicationController
- helper :user
- end
- 16:45
- 浏览 (240)
- 评论 (0)
- 分类: rubyonrails
- 相关推荐







评论排行榜