我在Rails 2.3.5,我有这个问题:
class BaseController < ApplicationController before_filter :foo,:only => [:index] end class ChildController < BaseController before_filter :foo,:only => [:index,:show,:other,:actions] end
问题是在ChildController上,foo before filter被调用两次.
我已经尝试了许多解决这个问题的解决方法.如果我没有在子代码中包含:index操作,它将永远不会被调用.
我找到的解决方案是有用的,但我认为这非常非常丑陋
skip_before_filter :foo before_filter :foo,:actions]
解决方法
“此行为是设计使然”.
控制器上的Rails指南说明:
“过滤器是继承的,所以如果在ApplicationController上设置过滤器,它将在应用程序中的每个控制器上运行.
这解释了你所看到的行为.它还建议您提出的完全相同的解决方案(使用skip_before_filter)来定义特定控制器和/或方法将要执行哪些过滤器或不运行哪些过滤器.
那么,丑陋还是不好,似乎你发现的解决方案是常见和批准的做法.
http://guides.rubyonrails.org/action_controller_overview.html#filters
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。