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

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

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

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby on Rails

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

Q&A

解決済

2回答

2394閲覧

マイページの投稿一覧が全ての投稿一覧になる

topposan2zi

総合スコア5

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/07/16 10:08

マイページの投稿一覧をそのユーザーだけのものにしたいです。

users/show.html.haml

.wrapper %ul.post-user 【投稿者】 %li.post-user-name= @user.name .pagination= paginate @posts .main - @posts.each do |post| .contents .contents__item = link_to image_tag(post.image.url,:size => '300x200', class: 'post-image'), post_path(post.id) .content-title= post.name.truncate(24, omission: '...') .post-infomatoin - if user_signed_in? && current_user.id == post.user_id = link_to edit_post_path(post.id), class: "post-info", method: :get do = icon('fas', 'edit', class: "post-edit") = link_to post_path(post.id), class: "post-info-destroy", method: :delete do = icon('fas', 'trash-alt', class: "post-destroy") .pagination= paginate @posts

users.controller.rb

class UsersController < ApplicationController def show @user = User.find(params[:id]) @posts = @user.posts.order('created_at DESC') @posts = Post.page(params[:page]).per(10).order('updated_at DESC') end end

posts.controller.rb

class PostsController < ApplicationController def index @posts = Post.includes(:user).order("created_at DESC") @posts = Post.page(params[:page]).per(10).order('updated_at DESC') end def new @post = Post.new end def create @post = Post.create(post_params) if @post.save redirect_to :root else render :new, notice: "画像を選択してください" end end def show @post = Post.find(params[:id]) @comment = Comment.new @comments = @post.comments.includes(:user).order('created_at DESC') end def destroy post = Post.find(params[:id]) if post.user_id == current_user.id post.destroy end redirect_to :root end def edit @post = Post.find_by(id: params[:id]) end def update @post = Post.find_by(id: params[:id]) if @post.update(post_params) redirect_to :root else render :edit end end private def post_params params.require(:post).permit(:text, :image, :name).merge(user_id: current_user.id) end end

models/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 validates :name, presence: true, uniqueness: true has_many :posts has_many :comments, dependent: :destroy has_many :favorites, dependent: :destroy def already_favorited?(post) self.favorites.exists?(post_id: post.id) end end

models/post.rb

class Post < ApplicationRecord belongs_to :user has_many :comments, dependent: :destroy has_many :favorites, dependent: :destroy mount_uploader :image, ImageUploader validates :image, presence: true validates :name, length: { maximum: 30 } end

routes.rb

Rails.application.routes.draw

1 devise_for :users 2 get '/users', to: redirect("/users/sign_up") 3 # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html 4 root to: 'posts#index' 5 resources :posts do 6 resources :comments, only: :create 7 resources :favorites, only: [:create, :destroy] 8 end 9 resources :users, only: [:show] 10 11end

お願いします!

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

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

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

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

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

guest

回答2

0

ベストアンサー

diff

1 def show 2 @user = User.find(params[:id]) 3- @posts = @user.posts.order('created_at DESC') 4- @posts = Post.page(params[:page]).per(10).order('updated_at DESC') 5+ @posts = @user.posts.page(params[:page]).per(10).order('updated_at DESC') 6 end

投稿2020/07/17 01:41

Mugheart

総合スコア2340

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

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

topposan2zi

2020/07/17 01:53

ありがとうございます! ページネーションを外した時にはしっかりと表示できていたのでそれと同じものの表示にするとできるのですね!
guest

0

@posts = Post.includes(:user).where(user_id: current_user.id). page(params[:page]).per(10).order('updated_at DESC')

でどうでしょう。
「そのユーザー」がcurrent_userであるとしています。

投稿2020/07/16 10:59

winterboum

総合スコア23284

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

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

topposan2zi

2020/07/16 11:07

回答ありがとうございます! こちらでできたと思ったのですが、 マイページを他のユーザーも見れるようにしたいので何か別の方法があれば助かります????
winterboum

2020/07/16 12:43

他のユーザーがloginした時に「他のユーザ」自身のマイページですか? それはこのままで良いと思いますが
topposan2zi

2020/07/17 01:25

そのユーザーの投稿一覧を他のユーザーも見れるようにしたいです! 今のままだとどのユーザーのマイページに行ってもログインしている自身のの投稿が表示されてしまいます。。 urlにidが振り分けられているのでパスはあっていました!
winterboum

2020/07/17 01:34

「マイページの投稿一覧をそのユーザーだけのものにしたいです。」 とどう折り合いをつけますか?
topposan2zi

2020/07/17 01:49

すみません、日本語が下手くそでした。 そのユーザーごとの投稿一覧にしたいが正しいです???? ページネーションの記述を、 @posts = @user.posts.page(params[:page]).per(10).order('updated_at DESC') にしたらできました!
winterboum

2020/07/17 01:52

ああ、「その」ってユーザ一覧から選んだユーザーですね? ですとMugheartさんの回答ですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問