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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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

解決済

「ログインしている。かつ、自分が投稿した内容のみを一覧(index)で確認できる」ようにしたい。

t.g
t.g

総合スコア1

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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

1回答

0リアクション

0クリップ

193閲覧

投稿2022/09/19 14:06

前提

Rubyの学習を行なっている初心者です。
練習のため、アプリケーションを作成しています。

実装したい内容に関して、大まかな構築はできたのですが、下記内容についてどうしても実装方法がわからない状況です。

実現したいこと

画像投稿機能付きのアプリの作成において、投稿した内容をindexにて表示する際に、
投稿内容をその投稿者のみに表示したい。

発生している問題・エラーメッセージ

今回実装していった内容だと、ログインしたユーザーが全ての投稿内容を確認できるようになっているが、
これを、「ログインしている。かつ、自分が投稿した内容のみを一覧(index)で確認できる」ようにしたい。

投稿の詳細などにおいて、

<% if current_user.id == @diary.user_id %>

等の記載は心得ております。

該当のソースコード

diaries_controller.rb

class DiariesController < ApplicationController before_action :authenticate_user! , only:[:new,:edit, :destroy] before_action :set_diary, only: [:edit, :show, :update, :destroy] def index @diaries = Diary.all @meals = Meal.all end def new @diary = Diary.new end def create @diary = Diary.new(diary_params) if @diary.save Diary.create else render :new end end def show end def edit end def update if @diary.update(diary_params) render :update else render :edit end end def destroy if current_user.id == @diary.user_id @diary.destroy render :destroy else redirect_to action: :index end end private def diary_params params.require(:diary).permit(:diary_title, :diary_comment, :diary_day, :image).merge(user_id: current_user.id) end def set_diary @diary = Diary.find(params[:id]) end end

meals_controller.rb

class MealsController < ApplicationController before_action :authenticate_user! , only:[:new,:edit, :destroy] before_action :set_meal, only: [:edit, :show, :update, :destroy] def index end def new @meal = Meal.new end def create @meal = Meal.new(meal_params) if @meal.save Meal.create else render :new end end def show end def edit end def update if @meal.update(meal_params) render :update else render :edit end end def destroy if current_user.id == @meal.user_id @meal.destroy render :destroy else redirect_to root_path end end private def meal_params params.require(:meal).permit(:meal_title, :meal_comment, :taste_id, :meal_time_id, :meal_day, :image).merge(user_id: current_user.id) end def set_meal @meal = Meal.find(params[:id]) end end

index.html.erb

<%= render "shared/header" %> <div class='nav'> <% if user_signed_in? %> <% else %> <ul class='lists-right'> <li><%= link_to 'ログイン', new_user_session_path, class: "login" %></li> <li><%= link_to '新規登録', new_user_registration_path, class: "sign-up" %></li> </ul> <% end %> </div> <% if user_signed_in? %> <%# 記録一覧 %> <div class='item-contents'> <h2 class='title'>記録</h2> <%= link_to(new_diary_path, class: 'purchase-btn') do %> <span class='purchase-btn-text'>思い出を残す</span> <!-- < image_tag 'icon_camera.png' , size: '185x50' ,class: "purchase-btn-icon" > --> <% end %> <div class="subtitle" > 思い出一覧 </div> <ul class='item-lists'> <%# 日記記録 %> <% @diaries.each do |diary|%> <li class='list'> <%= link_to diary_path(diary.id) do %> <div class='item-img-content'> <%= image_tag diary.image, class: "item-img" %> </div> <div class='item-info'> <h3 class='item-name'> <%= diary.diary_title %> </h3> <h3 class='item-name'> <%= diary.diary_comment %> </h3> <h3 class='item-name'> <%= diary.diary_day %> </h3> </div> <% end %> </li> <% end%> </ul> <%= link_to(new_meal_path, class: 'purchase-btn') do %> <span class='purchase-btn-text'>食事の記録を残す</span> <!-- < image_tag 'icon_camera.png' , size: '185x50' ,class: "purchase-btn-icon" > --> <% end %> <div class="subtitle" > 食事記録一覧 </div> <ul class='item-lists'> <%# 食事記録 %> <% @meals.each do |meal|%> <li class='list'> <%= link_to meal_path(meal.id) do %> <div class='item-img-content'> <%= image_tag meal.image, class: "item-img" %> </div> <div class='item-info'> <h3 class='item-name'> <%= meal.meal_title %> </h3> <h3 class='item-name'> <%= meal.meal_comment %> </h3> <h3 class='item-name'> <%= meal.meal_time.name %> </h3> <h3 class='item-name'> <%= meal.meal_day %> </h3> </div> <% end %> </li> <% end%> </ul> </div> <% else %> <% end %>

試したこと

詳細ページなどで使用する下記の方法を試したが、

<% if current_user.id == @diary.user_id %>

indexで表示されている投稿内容からuser_idなどの参照を持ってくる方法がわかりません。
そもそもindexではこのようなことができないのかもわかっておりません。

どなたか何かご教示いただけますと幸いです。
ご確認のほど、どうぞよろしくお願いいたします。

補足情報

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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