@Tomoyuki-Nakayama (ぺこら)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

投稿したものを複数ページでまとめて見たい

Q&A

Closed

解決したいこと

Ruby on Rails チュートリアルの内容を少し崩して学習しています。

13章のチュートリアルではログイン成功後は投稿機能を追加していきます。
投稿されたものはapp/views/users/show.html.erbで履歴として表示されます。

新たにリスト(list)という投稿されたものを一覧で表示してくるようなページを作っているのですが、show.html.erbのようには上手くいきません。

チュートリアルでは投稿を表示するパーシャルを作っていますが、またそれとは別のページにユーザー全ての投稿を表示してくれるような作り方をしたいです。
どのようにコードを書けば良いのかわかりませんでしたので、ご教授願えないかと思い質問致しました。

発生している問題・エラー

NoMethodError in StaticPages#list![screencapture-7f974104130b4cdf8fa2cf347def2ef0-vfs-cloud9-ap-northeast-1-amazonaws-list-2021-05-09-19_15_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1466371/34b8132b-d63f-0fac-a588-f12e8b1d0c0e.png)

該当するソースコード

config/routes.rb
Rails.application.routes.draw do
  get 'password_resets/new'
  get 'password_resets/edit'
  get 'sessions/new'
  get 'users/new'
  root 'static_pages#top'
  get  '/signup',  to: 'users#new'
  get  '/home',    to: 'static_pages#home'
  get  '/help',    to: 'static_pages#help'
  get  '/terms',   to: 'static_pages#terms'
  get  '/list',    to: 'static_pages#list'
  get    '/login',   to: 'sessions#new'
  post   '/login',   to: 'sessions#create'
  delete '/logout',  to: 'sessions#destroy'
  resources :users
  resources :account_activations, only: [:edit]
  resources :password_resets,     only: [:new, :create, :edit, :update]
  resources :microposts,          only: [:create, :destroy]
end



app/controllers/users_controller.rb
class UsersController < ApplicationController
.
.
.
def show
    @user = User.find(params[:id])
    @microposts = @user.microposts.paginate(page: params[:page])
  end
.
.
.
def list
    @user = User.find(params[:id])
    @microposts = @user.microposts.paginate(page: params[:page])
  end
app/views/users/show.html.erb
<% provide(:title, @user.name) %>
<div class="row">
  <aside class="col-md-4">
    <section class="user_info">
      <h1>
        <%= gravatar_for @user %>
        <%= @user.name %>
      </h1>
    </section>
  </aside>
  <div class="col-md-8">
    <% if @user.microposts.any? %>
      <h3>Microposts (<%= @user.microposts.count %>)</h3>
      <ol class="microposts">
        <%= render @microposts %>
      </ol>
      <%= will_paginate @microposts %>
    <% end %>
  </div>
</div>
app/views/microposts/_micropost.html.erb
<li id="micropost-<%= micropost.id %>">
  <%= link_to gravatar_for(micropost.user, size: 50), micropost.user %>
  <span class="user"><%= link_to micropost.user.name, micropost.user %></span>
  <span class="content"><%= micropost.content %></span>
  <span class="timestamp">
    Posted <%= time_ago_in_words(micropost.created_at) %> ago.
  </span>
</li>
app/views/static_pages/list.html.erb
app/views/users/show.html.erb
とほぼ同じ
app/views/static_pages/_micropost.html.erb
app/views/microposts/_micropost.html.erb
とほぼ同じ

0 likes

1Answer

Your answer might help someone💌