ActionController::UrlGenerationError in Cans#index解決方法
解決したいこと
ruby on railsで簡単な投稿アプリを作っています。
トップページにあるユーザー名をクリックするとマイページに遷移するところで詰まっています。
解決方法を教えてください。
発生している問題・エラー
ActionController::UrlGenerationError in Cans#index
app/views/cans/index.html.erb where line #4 raised:
No route matches {:action=>"show", :can_id=>#<User id: 2, nickname: "kei", email: "test@com", created_at: "2021-04-05 10:32:06", updated_at: "2021-04-05 10:32:06">, :controller=>"users"}, missing required keys: [:id]
Extracted source (around line #4)
<div class="greeting">
ユーザー名:
<%= link_to "#{current_user.nickname}", can_user_path(current_user), class: :greeting_link %>さん
</div>
<% end %>
該当するソースコード config/routes.rb
Rails.application.routes.draw do
devise_for :users
root to: 'cans#index'
resources :cans do
resources :comments, only: :create
resources :users, only: :show
end
end
該当するソースコード controllers/users_controller.rb
class UsersController < ApplicationController
def show
user = User.find(params[:id])
@nickname = user.nickname
@cans = user.cans
end
end
該当するソースコード cans/index.html.erb
<% if user_signed_in? %>
<div class="greeting">
ユーザー名:
<%= link_to "#{current_user.nickname}", can_user_path(current_user), class: :greeting_link %>さん
</div>
<% end %>
<div class="main-top">
<% @cans.each do |can| %>
<div class="can">
<%= link_to image_tag(can.image, class: :can_img), can_path(can.id) if can.image.attached? %>
<div class="can_name">
<%= can.user.nickname %>さん
<div class="can_active">
-<%= can.active.name %>-
</div>
</div>
<% end %>
</div>
該当するソースコード users/show.html.erb
<div class="main-top">
<p><%= @nickname %>さんの投稿一覧</p>
<% @cans.each do |can| %>
<div class="can">
<%= link_to image_tag(can.image, class: :can_img), if can.image.attached? %>
<div class="can_name">
<%= can.user.nickname %>さん
<div class="can_active">
-<%= can.active.name %>-
</div>
</div>
<% end %>
</div>
自分で試したこと
rails routesを確認し
can_user_path(current_user)指定
あまり理解できていない部分もありますがご教授お願いします。
1