0

我目前正在开发一个 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

在将 Posts Controller 嵌套到 Campaigns Controller 之前,Posts 控制器中的 before_filter 工作正常,因为我不希望用户登录后才能查看帖子。嵌套之后,即使在通过 Posts 控制器中的 :except 块不检查用户之后,也会呈现 before_filter。虽然我确实希望用户登录其余的 Posts 操作。

: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 并且不要在索引操作中跳过它。

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

4

1 回答 1

0

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

于 2012-09-05T06:23:00.500 回答