現在、トップページからマイページに移動したいのですがエラーが表示されてしまいます。
トップページからマイページ(userコントローラのshowアクションです)というリンクをクリックすると画像
のようなエラーが表示されてしまいます。
(問題を切り分けて、まずはトップページからマイページに移動できないエラーを解決しようと思っています。)
Relation周りのエラーということですが、リレーションの部分に関してはどこが間違っているか分かりませんでした。
現在、公式のrailsチュートリアルなどでMVCモデルの部分を確認しているところです。
アドバイスをいただきたいです。
【対象ファイル】
static_pages_controller.rb
# frozen_string_literal: true class StaticPagesController < ApplicationController def home @user = User.all @title = 'ジムの口コミ' @description = 'ジムの口コミを調べることができるサイトです' @keywords = 'ジム' 'パーソナルトレーニング' '筋トレ' end def help @title = '問い合わせ' end def about; end end
_header.html.erb
<nav class="navbar navbar-default navbar-fixed-top"> <div class="container"> <div class="navbar-header"> </div> <div id="navbar" class="collapse navbar-collapse navbar-right"> <ul class="nav navbar-nav"> <li class="active"><%= link_to "ホーム", root_path %></li> <li class="active"><%= link_to "コラム", blogs_path %></li> <li class="active"><%= link_to "口コミ", gyms_path %></li> <% if logged_in? %> <li class="active"><%= link_to "マイページ", user_path(@user) %></li> <% if current_user.try(:admin?) %> <li class="active"><%= link_to "管理画面", "/admin" %></li> <% end %> <li class="active"><%= link_to "設定", edit_user_path(current_user) %></li> <li class="active"><%= link_to "ログアウト", logout_path, method: :delete, data: { confirm: "ログアウトしますか?" } %></li> <% else %> <li class="active"><%= link_to "ログイン", login_path %></li> <% end %> </ul> </nav>
users_controller.rb
# frozen_string_literal: true class UsersController < ApplicationController before_action :logged_in_user, only: %i[index edit update destroy] before_action :correct_user, only: %i[edit update] before_action :admin_user, only: :destroy def index @user = User.all @users = User.paginate(page: params[:page]) end def show @user = User.all @user = User.find(params[:id]) end def new @user = User.new end def create @user = User.new(user_params) if @user.save log_in @user flash[:success] = 'ログイン成功です' redirect_to root_url else flash.now[:danger] = '正しく入力してください' render 'new' end end def edit @user = User.find(params[:id]) end def update @user = User.find(params[:id]) if @user.update(user_params) flash[:success] = '情報を更新しました' redirect_to root_url else render 'edit' end end def destroy User.find(params[:id]).destroy flash[:success] = 'User deleted' redirect_to users_url end private def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation) end # beforeアクション # 正しいユーザーかどうか確認 def correct_user @user = User.find(params[:id]) redirect_to(root_url) unless current_user?(@user) end # 管理者かどうか確認 def admin_user redirect_to(root_url) unless current_user.admin? end end
show.html.erb
<% provide(:title, @user.name) %> <div class="row"> <aside class="col-md-4"> <section class="user_info"> </section> </aside> </div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。