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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

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

Q&A

解決済

1回答

1827閲覧

users/indexにアクセスしているのにusersのshowビューのエラー表示が出る

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

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

0グッド

0クリップ

投稿2019/07/17 12:03

users/indexにアクセスしているのにusersのshowビューのエラー表示が出ます。
イメージ説明
しかしusers/showにアクセスすると正常に動作します
showビューのコードを消してusers/indexにアクセスするとindexビューにコードがあるのに何も表示されません。
users/indexにアクセスするとshowビューが呼び出されてしまっているのだと思うのですが解決策がわかりません

よろしくお願いします。

routes

1Rails.application.routes.draw do 2 3 post "likes/:post_id/create" => "likes#create" 4 post "likes/:post_id/destroy" => "likes#destroy" 5 6 post "users/:id/update" => "users#update" 7 get "users/:id/edit" => "users#edit" 8 post "users/create" => "users#create" 9 get "signup" => "users#new" 10 post "login" => "users#login" 11 post "logout" => "users#logout" 12 get "login" => "users#login_form" 13 get "users/:id/likes"=>"users#likes" 14 get "users/:id/leave"=>"users#leave" 15 post "users/:id/destroy"=>"users#destroy" 16 get "users/:id"=>"users#show" 17 get "users/index"=>"users#index" 18 19 get "posts/index" => "posts#index" 20 get "posts/new" => "posts#new" 21 get "posts/:id" => "posts#show" 22 post "posts/create" => "posts#create" 23 get "posts/:id/edit" => "posts#edit" 24 post "posts/:id/update" => "posts#update" 25 post "posts/:id/destroy" => "posts#destroy" 26 27 get "/" => "home#top" 28end

userscontroller

1class UsersController < ApplicationController 2 before_action :authenticate_user, {only: [:index, :show, :edit, :update]} 3 before_action :forbid_login_user, {only: [:new, :create, :login_form, :login]} 4 before_action :ensure_correct_user, {only: [:edit, :update]} 5 6 def index 7 @user=User.all 8 end 9 10 def show 11 @user = User.find_by(id: params[:id]) 12 end

indexhtml

1<div class="main users-index"> 2 <div class="container"> 3 <h1 class="users-heading">ユーザー一覧</h1> 4 <% @users.each do |user| %> 5 <div class="users-index-item"> 6 <div class="user-left"> 7 <img src="<%= "/user_images/#{@user.image_name}" %>"> 8 </div> 9 <div class="user-right"> 10 <%= link_to(user.name, "/users/#{@user.id}") %> 11 </div> 12 </div> 13 <% end %> 14 </div> 15</div>

showhtml

1<div class="main user-show"> 2 <div class="container"> 3 <div class="user"> 4 <img src="<%= "/user_images/#{@user.image_name}" %>"> 5 <h2><%= @user.name %></h2> 6 <p><%= @user.email %></p> 7 <% if @user.id == @current_user.id %> 8 <%= link_to("編集", "/users/#{@user.id}/edit") %> 9 <% end %> 10 </div> 11 12 <ul class="user-tabs"> 13 <li class="active"><%= link_to("投稿", "/users/#{@user.id}") %></li> 14 <li><%= link_to("いいね!", "/users/#{@user.id}/likes") %></li> 15 </ul> 16 17 <% @user.posts.each do |post| %> 18 <div class="posts-index-item"> 19 <div class="post-left"> 20 <img src="<%= "/user_images/#{post.user.image_name}" %>"> 21 </div> 22 <div class="post-right"> 23 <div class="post-user-name"> 24 <%= link_to(post.user.name, "/users/#{post.user.id}") %> 25 </div> 26 <%= link_to(post.content, "/posts/#{post.id}") %> 27 </div> 28 </div> 29 <% end %> 30 </div> 31</div> 32

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

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

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

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

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

guest

回答1

0

ベストアンサー

get "users/:id"=>"users#show" get "users/index"=>"users#index"

このIndexの記述のためかと思われます。
この場合に/userrs/indexにアクセスした場合、id=indexと判断しshowメソッドを実行してしまいます。

get "/users"=>"users#index"

としてみてください。

投稿2019/07/17 12:22

hatsu

総合スコア1809

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

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

退会済みユーザー

退会済みユーザー

2019/07/23 05:52

返答が非常に遅れてしまい申し訳ありません 教えていただいたように変更するとうまくいきました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問