0

私は現在、2つのコントローラーを持つRails3.2アプリケーションに取り組んでいます。1つはキャンペーンで、もう1つは投稿です。どちらも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

Posts Indexアクションのbefore_filterをスキップするために複数のことを試みましたが、どれも機能していないようです。skip_before_filterとskip_filterも試しましたが、機能していません。それらは、すべての投稿アクションでbefore_filterをスキップするだけであり、exceptブロックを渡すと、before_filterを実装し、インデックスアクションでスキップしません。

このことを解決するための助けをいただければ幸いです

4

1 に答える 1

0

問題は解決しなかったので、私はそれを別の方法でやることになりました!

于 2012-09-05T06:23:00.500 に答える