前提・実現したいこと
rails6を実際に動かしながら勉強している者です。
投稿詳細ページに投稿者のリンクを貼ることには成功したのですが、投稿一覧ページにも誰が投稿したのかをみられるようにしたいと思っています。
しかし調べても参考になりそうなサイトが見当たらなかったので、こちらで質問させていただきました。
投稿一覧ページの各投稿に、icon、nickname、user_nameを表示する方法を教えていただけませんでしょうか。
投稿一覧ページ
#home.html.erb <% @post.each do |post| %> <div class="posts-index-item"> <%= link_to(post.content, "http://localhost:3000/post/#{post.id}") %> </div> <% end %>
#top_controller class TopController < ApplicationController def home @post = Post.all.order(created_at: :desc) end end
投稿詳細ページ
#show.html.erb こちらでは表示できる <div class="posts-show-item"> <%= @post.content %> <div class="post-time"> <%= @post.created_at %> </div> <%= link_to(@user.user_name, "http://localhost:3000/users/#{@user.id}") %> </div>
#post_controller class PostController < ApplicationController protect_from_forgery except: :update before_action :ensure_correct_user,{only: [:edit,:update,:destroy]} def show @id = params[:id] @post = Post.find_by(id: params[:id]) @user = User.find_by(id: @post.user_id) end def edit @post = Post.find_by(id: params[:id]) end def update @post = Post.find_by(id: params[:id]) @post.content = params[:content] @post.save redirect_to("/") end def destroy @post = Post.find_by(id: params[:id]) @post.destroy redirect_to("/") end def ensure_correct_user @post = Post.find_by(id:params[:id]) if @post.user_id != @current_user.id flash[:notice] = "権限がありません" redirect_to("/posts/index") end end end
post model 投稿テーブル
#post.rb class Post < ApplicationRecord end
User model
#user.rb ユーザーテーブル class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable before_create{ self.nickname = username } def user_name "@#{self.username}" end def posts return Post.where(user_id: self.id) end mount_uploader :icon, ImageUploader end
回答1件
あなたの回答
tips
プレビュー