1

私はデバイスを使用しています。ユーザーが「サインアップ」すると、名前、電子メール、パスワードなどを入力するページに移動し、「サインアップ」ボタンをクリックします。入力したすべての詳細が正しければ、アプリケーションに進みます。起こるはずです。

やりたいことは、「[アカウントを作成] をクリックすると、利用規約に同意したことを確認する」というリンクを追加することです。サインアップページで。これですべてです。単純なリンクです。チェック ボックスなどはありません。

「サインアップ」ページのコードには次のものがあります。

            <div class='t_and_c'>

    By clicking "Create Account" you confirm that you accept 
the <%= link_to "Terms and Conditions.", "static_pages#terms_and_conditions" %>
            </div>

しかし、人がリンクをクリックするたびに、「サインアップ」ページをリロードし続けます。これは、ユーザーがサインインするまで何もロードしないようにアプリに指示しているコードがあるためです。私の質問は次のとおりです。

ユーザーがサインインしていなくても、このリンク「利用規約」だけで、terms_and_conditions.html.erb を読み込むにはどうすればよいですか? before_filter または skip_before フィルターだと思いますが、どうすればよいかわかりません。

4

2 に答える 2

5

サインインしない限り、ビジターの読み取りを防止するための認証方法である可能性がある があるStaticPagesControllerかどうかを確認してください。before_filter

そうであれば、次のように「terms_and_conditions」メソッドに除外オプションを追加するだけです。

before_filter :authorize, :except => :terms_and_conditions

または

before_filter :authorize, :except => [:terms_and_conditions, :other_method_as_well]

追加

OPの更新によると、 before_filter がありますが、フィルターは親クラスにありApplicationControllerます。

この場合、子クラスに別の before_filter を単純に追加して上書きしようとすることはできません。これを行うと、フィルター チェーンにもう 1 つのフィルターが追加されます。

skip_before_filter解決策は、このように使用することです

StaticPagesController < ApplicationController
  skip_before_filter :authenticate_user!, only: :terms_and_conditions

メソッド参照: http://apidock.com/rails/AbstractController/Callbacks/ClassMethods/skip_before_filter

于 2013-05-11T11:01:26.933 に答える