2017-08-10 19 views
0

私はdeviseを実行しています。特定のルートを除いてすべてを強制的にサインオンする必要があります。私のアプリでは、私は長いURLを保存し、リダイレクトのための長いURLをつかむために私のアプリに戻って指すために短いURLを使用しています。ログインしていない外部ユーザーは、その短いURLをたどり、外部リダイレクトの長いURLを取得する必要があります。たとえば、localhost.com/WdeFrsはデータベースから長いリンクを引き出し、サイト.... google.comにリダイレクトします。リンクをたどってログインを強制する以外はすべて動作します。 ログインなしで作業する必要があります。修正を明確にするのに役立つ人がいますか?devise before_action:認証例外

application_controller.rb before_actionオプションexceptはアクション名ではなく、コントローラ名を期待し

resources :urls 
    get "/:short_url", to: "urls#shortcustom" 
    get "shortened/:short_url", to: "urls#shortened", as: :shortened 
+0

ログインユーザーがいない方法はありますか? – Vishal

+0

get "/:short_url"、 ":urls#shortcustom"私は例外を作成しようとしていると思います。 – Jrinard

+0

あなたのURLコントローラでこの 'skip_before_filter:authenticate_user !,:only =>:shortcustom'を試してください。 – Vishal

答えて

1

before_action :authenticate_user!, :except => [:urls] 

routes.rbをいただき、ありがとうございます。つまり、あなたのコードはurlsという名前のアクションに対して認証をスキップします。 urls#shortcustomurls#shortenedの認証をスキップする

、あなたはあなたのUrlsController

skip_before_action :authenticate_user!, :only => [:shortcustom, :shortened] 

を含める必要があります。

+0

私はそれを試してみましたが、エラーが発生しました:in skip_callback ':process_actionコールバックの前に:authenticate_user! has not defined(ArgumentError)私はこのバグの修正を探しています。 :) – Jrinard

+0

@Jrinardエラーとして、コントローラのスコープ内に定義された 'authenticate_user! 'はありません。 'ApplicationController'で定義されていることを確信していますか?' UrlsController'はそれを継承していますか? – vijoc

+0

ありがとう、私はbefore_actionを持っていなかった:authenticate_user!私のapplication_controllerに! 助けてくれてありがとう! – Jrinard

関連する問題