前提・実現したいこと
rails6にdeviseを導入してログインの機能をつけました。
もともとdeviseにnameの入力フォームがなかったので、フォームを付けてデータベースにカラムを追加しました。
current_userで表示できると思ってhtmlに追記しましたがエラーが発生しました。
Progateではコントローラーのloginに追記していたのですが、deviseのコントローラーのどこに追記したらいいかわからないです。
find_byかsessionでidを取得しnameを表示したいのですが、どこに追記したらいいでしょうか?
発生している問題・エラーメッセージ
該当のソースコード
html
1#dashboard.html.erb 2 3<h1 class="cate-h1 mb-4">Dashboard</h1> 4<div class="row"> 5 <div class="col-md-12 mb-4"> 6 <div class=user-info text-center> 7 <h2></h2> 8 <small>"learned4word" 9 </small> 10 <div> 11 </div> 12 <div class="col-md-12"> 13 <div class="activity border"> 14 <p class="ac-title text-center">Activity</p> 15 <ul class="ac-list"> 16 <li class="text-center"> 17 <div class="pp"> 18 <%= @current.name %> 19 <span> 20 <a>"learned1of4words" 21 </a> 22 <br> 23 <small>Posted 2 days ago 24 </small> 25 </span> 26 </div> 27 </li> 28 </ul> 29 </div> 30</div> 31
ruby
1Rails.application.routes.draw do 2 get "/posts/top", to: "posts#top" 3 get "/posts/about", to: "posts#about" 4 get "/posts/index", to: "posts#index" 5 get "/posts/dashboard", to: "posts#dashboard" 6 get "/posts/lessons", to: "posts#lessons" 7 get "/posts/profile", to: "posts#profile" 8 get "/posts/setting", to: "posts#setting" 9 root 'posts#top' 10 devise_for :users, :controllers => { 11 :registrations => 'users/registrations', 12 :sessions => 'users/sessions' 13} 14 15 # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html 16end 17
ruby
1class PostsController < ApplicationController 2 3 def dashboard 4 @current_user = User.find_by(id: params[:id]) 5 end 6 7end
補足情報(FW/ツールのバージョンなど)
dashboard.html.erbに表示したいです。
コントローラーのdashboard定義内にcurrent_userを記入すればできると思ったので、このようなソースコードになっています。
deviseのコントローラーは導入後何もカスタマイズはしていません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/09 03:00
2020/05/09 08:35
2020/05/10 12:17
2020/05/10 17:55