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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails

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

Q&A

0回答

635閲覧

rails if文がうまく動かない

pink

総合スコア0

Ruby on Rails

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

0グッド

1クリップ

投稿2021/02/08 14:45

前提・実現したいこと

railsで投稿サイトを作っています。
if文で @current_user.id == @post.user_id という条件を実現させたいです。
それぞれ<%=@current_user.id%>、<%=@post.user_id%>とやると、どちらも同じ数字が出るのでできるはずなのですが条件に適した表示がされません。

該当のソースコード

html

1<div class="individual-post"> 2 <div class="show-up"> 3 <div class="post-title"> 4 <%=@post.title%> 5 </div> 6 <div class="show-user"> 7 <img src="<%="/user_images/#{@post.user.image_name}"%>"> 8 <%=link_to("#{@post.user.name}","/users/#{@post.user_id}")%> 9 </div> 10 </div> 11 <div class="post-genre"> 12 <span>ジャンル:</span> 13 <%=@post.genre%> 14 </div> 15 <div class="post-summary"> 16 <span>あらすじ:</span> 17 <%=@post.summary%> 18 </div> 19 <div class="post-impression"> 20 <span>感想:</span> 21 <%=@post.impression%> 22 </div> 23 <%if @post.user_id == @current_user.id%> <---ここ 24 <div class="post-destroy"> 25 <%=link_to("編集","/posts/#{@post.id}/edit",class:"edit")%> 26 <%=link_to("削除","/posts/#{@post.id}/destroy",{method: "post"})%> 27 </div> 28 <%end%> 29 </div>

posts.controller.rb

controller

1class PostsController < ApplicationController 2 3 before_action :authenticate_user,{only:[:new,:create,:show,:destroy,:edit,:update]} 4 before_action :check_post_user,{only:[:edit,:update,:destroy]} 5 6 def top 7 @posts=Post.all.order(created_at: :desc) 8 end 9 10 def new 11 @post=Post.new 12 end 13 14 def create 15 @post=Post.new( 16 title: params[:title], 17 genre: params[:genre], 18 summary: params[:summary], 19 impression: params[:impression], 20 user_id: @current_user.id 21 ) 22 if @post.save 23 redirect_to("/top") 24 else 25 render("/posts/new") 26 end 27 end 28 29 def show 30 @post=Post.find_by(id: params[:id]) 31 end 32 33 def action 34 @posts=Post.where(genre: "アクション") 35 end 36 37 def sf 38 @posts=Post.where(genre: "SF") 39 end 40 41 def fantasy 42 @posts=Post.where(genre: "ファンタジー") 43 end 44 45 def mystery 46 @posts =Post.where(genre: "サスペンス・ミステリー") 47 end 48 49 def comedy 50 @posts=Post.where(genre: "コメディ") 51 end 52 53 def horror 54 @posts=Post.where(genre: "ホラー") 55 end 56 57 def love 58 @posts=Post.where(genre: "恋愛") 59 end 60 61 def music 62 @posts=Post.where(genre: "ミュージカル・音楽") 63 end 64 65 def destroy 66 @post=Post.find_by(id: params[:id]) 67 @post.destroy 68 redirect_to("/top") 69 end 70 71 def edit 72 @post=Post.find_by(id: params[:id]) 73 end 74 75 def update 76 @post=Post.find_by(id: params[:id]) 77 @post.title=params[:title] 78 @post.genre=params[:genre] 79 @post.summary=params[:summary] 80 @post.impression=params[:impression] 81 if @post.save 82 redirect_to("/posts/#{@post.id}") 83 else 84 render("posts/edit") 85 end 86 end 87 88 #投稿の制限 89 def check_post_user 90 @post = Post.find_by(id: params[:id]) 91 if @post.user_id != @current_user.id 92 flash[:notice] = "権限がありません" 93 redirect_to("/top") 94 end 95 end 96 97end 98

application.controller.rb

controller

1class ApplicationController < ActionController::Base 2 3 before_action :set_current_user 4 5 #ログインユーザー 6 def set_current_user 7 @current_user = User.find_by(id: session[:user_id]) 8 end 9 #ログインしているユーザー制限 10 def login_user 11 if @current_user 12 redirect_to("/top") 13 flash[notice]="既にログインしています" 14 end 15 end 16 #ログインしていないユーザー制限 17 def authenticate_user 18 if @current_user ==nil 19 redirect_to("/top") 20 flash[:notice]="ログインしてください" 21 end 22 end 23 24 #マイページ制限 25 def check_mypage_user 26 if @current_user.id != params[:id].to_i 27 redirect_to("/top") 28 flash[:notice]="権限がありません" 29 end 30 end 31end 32

試したこと

== を!=にすると表示はされますが、条件に合わなユーザーでも表示されるようになってしまう。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2021/02/08 21:46

それぞれデバッグしてどんな値を保持しているのか確認されては?
winterboum

2021/02/09 12:26

モデル Post のschemaを載せてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問