在筛选嵌套资源之前跳过

时间:2012-08-30 05:08:32

标签: ruby ruby-on-rails-3.2 rails-routing nested-resources before-filter

我目前正在开发一个Rails 3.2应用程序,其中我有两个控制器。一个是活动,另一个是帖子。他们俩都有一个before_filter。请看下面的控制器和路线:

广告系列控制器:

class CampaignsController < ApplicationController

  before_filter :authenticate_user!, except: [:show, :landing]

帖子控制器:

 class PostsController < ApplicationController
  before_filter :check_sign_in, :except => [:index]

路线:

resources :campaigns do

    resources :posts
end

在广告系列控制器中嵌入帖子控制器之前,帖子控制器中的before_filter工作正常,因为我不希望用户登录只是查看帖子。嵌套之后,即使在Posts控制器中传递:except块后不检查用户,也会渲染before_filter。虽然我确实希望用户登录其余的帖子操作。

:check_sign_in在应用程序控制器中,如下所示:

protected

def check_sign_in

 redirect_to "#{sign_in_url}?origin=#{CGI::escape(request.fullpath)}" unless user_signed_in?

end

我已经尝试了多项内容来跳过帖子索引操作中的before_filter,但它们似乎都没有效果。我也尝试过skip_before_filter和skip_filter,但它们也没有用。他们只是在所有帖子操作上跳过before_filter,如果我传递except块而不是它实现了before_filter,并且在索引操作时不跳过它。

任何帮助解决这个问题都将不胜感激

1 个答案:

答案 0 :(得分:0)

问题没有解决,所以我最后以另一种方式做到了!