###解決したいこと
ProgateでRailsを学習しています。URI Patternで設定されているパスの代わりにPrefix_pathを使って設定したいのですが、うまくページに飛ばない問題を解決したいです。
###内容
以下はProgate側の模範回答です。link_toメソッド内でのパスがURI Patternで記述されています。
Ruby
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-right"> 7 <!-- ユーザー名から、ユーザー詳細ページへ飛ぶように設定 --> 8 <%= link_to(user.name, "/users/#{user.id}") %> 9 </div> 10 </div> 11 <% end %> 12 </div> 13</div>
自分はこのパスをURI Patternではなく、以下の様にPrefix_pathを使って設定してみました。
Ruby
1<%= link_to(user.name, users_index_path(user.id)) %>
しかしうまくページが遷移しません。エラーメッセージは特に表示されず、URLが以下の様に表示が変わるだけでした。
URL
1localhost:3000/users/index.1
参考までに、rails routesコマンドの実行結果とroutes.rbとcontrollerは以下になります。
terminal
1 Prefix Verb URI Pattern Controller#Action 2 users_index GET /users/index(.:format) users#index 3 GET /users/:id(.:format) users#show 4 posts_index GET /posts/index(.:format) posts#index 5 posts_new GET /posts/new(.:format) posts#new 6 GET /posts/:id(.:format) posts#show 7posts_create POST /posts/create(.:format) posts#create 8 GET /posts/:id/edit(.:format) posts#edit 9 POST /posts/:id/update(.:format) posts#update 10 POST /posts/:id/destroy(.:format) posts#destroy 11 GET / home#top 12 about GET /about(.:format) home#about
Ruby
1Rails.application.routes.draw do 2 get "users/index" => "users#index" 3 get "users/:id" => "users#show" 4 5 get "posts/index" => "posts#index" 6 get "posts/new" => "posts#new" 7 get "posts/:id" => "posts#show" 8 post "posts/create" => "posts#create" 9 get "posts/:id/edit" => "posts#edit" 10 post "posts/:id/update" => "posts#update" 11 post "posts/:id/destroy" => "posts#destroy" 12 13 get "/" => "home#top" 14 get "about" => "home#about" 15end
Ruby
1class UsersController < ApplicationController 2 def index 3 @users = User.all 4 end 5 6 def show 7 @user = User.find_by(id: params[:id]) 8 end 9 10end
###試したこと
Prefix_pathのカッコ内の引数の書き方が間違っているのかと思い、以下のパターンでも試してみましたがうまくいきませんでした。
Ruby
1<%= link_to(user.name, users_index_path(user)) %>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/13 00:57
2020/05/13 03:23
2020/05/13 03:26 編集
2020/05/15 15:27
2020/05/16 00:39