質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

3501閲覧

rails deviseのアクセス権限

akiiti

総合スコア5

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2020/01/10 08:24

railsで投稿サイトを作成しており、現在ページのアクセス権限をかけております。
ログインしていないユーザは投稿の新着一覧ページのみ表示できて、その他ページ(いいね順表示・投稿詳細・新規投稿など)にリンクするとログインページにリダイレクトさせたいです。

しかし、新規投稿ページのみリンクすると「You need to sign in or sign up before continuing.」とのみ表示され、リダイレクトをしてくれません。
問題点をご教授いただきたいです。

######投稿のController

class PostsController < ApplicationController before_action :authenticate_user!, only: [:favorite,:show,:new,:create,:edit,:update,:destroy] def index @posts = if params[:tag].present? Post.tagged_with(params[:tag]).page(params[:page]).per(4) else Post.all.page(params[:page]).per(4) end @users = User.all @tags = ActsAsTaggableOn::Tag.includes(:taggings).where("taggings_count > 0") end def favorite unless authenticate_user? redirect_to new_user_session_path end @posts = if params[:tag].present? Post.tagged_with(params[:tag]).page(params[:page]).per(4) else Post.all.page(params[:page]).per(4) end @users = User.all @tags = ActsAsTaggableOn::Tag.includes(:taggings).where("taggings_count > 0") @array = Post.find(Favorite.group(:post_id).order('count(post_id) desc').limit(4).pluck(:post_id)) @all_ranks = Kaminari.paginate_array(@array).page(params[:page]).per(4) end def show @post = Post.find(params[:id]) @user = @post.user end def new @post = Post.new end def create @post = Post.new(post_params) @post.user_id = current_user.id if @post.save redirect_to post_show_path(@post.id) else flash.now[:danger] = "投稿できませんでした。" render :new end end def edit @post = Post.find(params[:id]) if current_user != @post.user redirect_to post_show_path end end def update @post = Post.find(params[:id]) if @post.update(post_params) redirect_to post_show_path else flash.now[:danger] = "投稿を更新できませんでした。" render :edit end end def destroy @post = Post.find(params[:id]) if @post.destroy flash[:notice] = "投稿が削除されました" redirect_to posts_path else render action: :edit end end private def post_params params.require(:post).permit(:title, :content, :address, :tag_list, :image, :location) end def user_params params.require(:user).permit(:name, :image) end def tag_params params.require(:tag).permit(:tag, :name) end end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

before_action :authenticate_user!, only: [:favorite,:show,:new,:create,:edit,:update,:destroy]

こにらでauthenticate_user!のみを指定しているからです
authenticate_and_redirect_urerてきなprivateメソッドを作ってそちらを指定しましょう

投稿2020/01/10 09:06

mariguranule

総合スコア204

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問