rails 初心者です。
現在、簡単なゴルフスコア入力アプリをrailsにて制作中で、ユーザー機能を付け加えているところでした。
セオリーどおり、モデルをつくって、コントローラ、ビューを設定して、ブラウザで〇〇/usersにアクセスしましたが、トップページと全く同じ表示になってしました。
実現させたいのは、ユーザーインデックスを表示させたいです。
Userインスタンスはいくつか作ってあります。
ルーティングが怪しいかなと思ってみましたが、
users GET /users(.:format)
の表示があったので、ここは問題ないのかなと思います。
エラーが出てくれないので、どこが悪いのかわからない状態です。
アドバイス、ヒントいただけないでしょうか
宜しくお願い致します。
routes.rb
RUBY
1Rails.application.routes.draw do 2 3 root to: 'scores#index' 4 resources :scores 5 6 get 'signup', to: 'users#new' 7 resources :users, only: [:index, :show, :new, :create] 8end
user.rb
ruby
1class User < ApplicationRecord 2 before_save { self.email.downcase! } 3 validates :name, presence: true, length: { maximum: 50 } 4 validates :email, presence: true, length: { maximum: 255 }, 5 format: { with: /\A[\w+\-.]+@[a-z\d\-.]+.[a-z]+\z/i }, 6 uniqueness: { case_sensitive: false } 7 has_secure_password 8end
users_controller.rb
ruby
1class UsersController < ApplicationController 2 def index 3 @users = User.order(id: :desc).page(params[:page]).per(25) 4 end 5 6 def show 7 end 8 9 def new 10 end 11 12 def create 13 end 14end 15
users/index.html.erb
erb
1<%= render 'users', users: @users %>
users/_users.html.erb
erb
1<% if users.any? %> 2 <ul class="list-unstyled"> 3 <% users.each do |user| %> 4 <li class="media"> 5 <img class="mr-2 rounded" src="<%= gravatar_url(user, { size: 50 }) %>" alt=""> 6 <div class="media-body"> 7 <div> 8 <%= user.name %> 9 </div> 10 <div> 11 <p><%= link_to 'View profile', user_path(user) %></p> 12 </div> 13 </div> 14 </li> 15 <% end %> 16 </ul> 17 <%= paginate users %> 18<% end %>
ruby
1module UsersHelper 2 def gravatar_url(user, options = { size: 80 }) 3 gravatar_id = Digest::MD5::hexdigest(user.email.downcase) 4 size = options[:size] 5 "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}" 6 end 7end 8
scores/index.html.etb
erb
1<h1>スコアカード</h1> 2 3<ul> 4 <% @scores.each do |score| %> 5 <li><%= score.id %> H: Par<%= score.par %> <%= link_to score.hole_score , score %> <%= score.hole_score - score.par %> </li> 6 7 <% end %> 8</ul> 9<p>今日のスコアは 10 <%= @total_score %>でした 11</p> 12 13<div class="center jumbotron"> 14 <div class="text-center"> 15 <h1>Welcome to the Microposts</h1> 16 <%= link_to 'Sign up now!', signup_path, class: 'btn btn-lg btn-primary' %> 17 </div> 18</div>
scores_controller.rb
ruby
1class ScoresController < ApplicationController 2 def index 3 @scores = Score.all 4 @total_score =Score.all.sum(:hole_score) 5 6 end 7 def show 8 @score = Score.find(params[:id]) 9 end 10 def create 11 @score = Score.new(score_params) 12 13 if @score.save 14 flash[:success] = 'Score が正常に投稿されました' 15 redirect_to @score 16 else 17 flash.now[:danger] = 'Score が投稿されませんでした' 18 render :new 19 end 20 end 21 22 def edit 23 @score = Score.find(params[:id]) 24 end 25 26 def update 27 @score = Score.find(params[:id]) 28 29 if @score.update(score_params) 30 flash[:success] = 'Score は正常に更新されました' 31 redirect_to @score 32 else 33 flash.now[:danger] = 'Score は更新されませんでした' 34 render :edit 35 end 36 end 37 38 def destroy 39 @score = Score.find(params[:id]) 40 @score.destroy 41 42 flash[:success] = 'Score は正常に削除されました' 43 redirect_to scores_url 44 end 45 46 private 47 48 # Strong Parameter 49 def score_params 50 params.require(:score).permit(:hole_score) 51 end 52end 53
回答1件
あなたの回答
tips
プレビュー