before_filter不取消操作

我在使用filter在最近从1.9(?)升级到2.3.11的Rails应用程序中工作之前遇到了麻烦。 为了尝试和debugging它,我在控制器中放了一个before_filter:

before_filter :false_filter 

和application_controller.rb中的以下内容:

 def false_filter puts "false filter running" false end 

然后我从cucumber / webrat或浏览器中调用该方法,并且在filter被调用(我可以看到输出消息的投入)时,filter链不会终止。

我想知道是否有一些没有生成的样板代码。 任何人都可以build议在哪里看?

没有任何关注前filter的返回值。 如果你想停止处理,你必须从你的filter或redirect到其他地方, 从罚款指南 :

如果之前的filter呈现或redirect,则该操作将不会运行。 如果在该filter之后计划运行其他filter,则它们也将被取消。

相同的文本出现在2.3.8指南中 。

这种行为是有道理的,如果filter链没有完成(即停止过滤部分path),那么你最终将调用控制器方法的东西没有设置他们期望他们的方式,这只会导致痛苦,苦难和混乱,那不会是友好或乐趣。