プログラミンが学習を初めて1ヶ月の新人ですが、よろしくお願いします。
簡単な投稿機能のアプリを作成しています。
投稿者のマイページにアクセスできるようにしたいのですが、エラーが表示されます。
current_userを使いログインしているユーザーのツイートを表示させることはできました。
ですが、どの投稿者ページを見てもログインしている人のツイート一覧が表示されてしまいます。
ですので、投稿者名をクリックしたら、そのユーザーのページに遷移できるように、users_controller.rbのshowにuser = User.find(params[:id])を追加したのですが、エラーが出てしまいました。
users_controller.rb
class UsersController < ApplicationController
def show
user = User.find(params[:id])⇦追加したら、表示できると思いましたがエラーが出ました。
@name = current_user.name
@posts = current_user.posts
end
end
posts_controller.rb
class PostsController < ApplicationController
before_action :set_post, only: [:edit, :show]
before_action :move_to_index, except: [:index, :show, :search]
def index
@posts = Post.includes(:user).order("created_at DESC")
end
def new
@post = Post.new
end
def create
Post.create(post_params)
end
def destroy
post = Post.find(params[:id])
post.destroy
end
def edit
end
def update
post = Post.find(params[:id])
post.update(post_params)
end
def show
@comment = Comment.new
@comments = @post.comments.includes(:user)
@like = Like.new
end
def search
@posts = Post.search(params[:keyword])
end
private
def post_params
params.require(:post).permit(:player, :team, :Recommended_player, :image).merge(user_id: current_user.id)
end
def set_post
@post = Post.find(params[:id])
end
def move_to_index
redirect_to action: :index unless user_signed_in?
end
end
index html.haml
.Posts__user
= link_to "/users/(post.user_id)" do
投稿者
= post.user.name
routes.rb
Rails.application.routes.draw do
devise_for :users
root to: 'posts#index'
resources :posts do
resources :likes, only: [:create, :destroy]
resources :comments, only: :create
collection do
get "search"
end
end
resources :users, only: :show
end
説明不足であるかもしれませんが、アドバイスいただけましたら幸いです。
他に情報が必要でした教えてください。
どうぞよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー