ここに質問の内容を詳しく書いてください。
railstutorialの8.2.3を進めていますが、ユーザーがログインしている状態でのレイアウト画面が表示されません。(ログインはできます)
また、全画面ではなく画面の幅を縮めると、想定しているドロップダウンメニューができます。(添付の画像参照)
発生している問題・エラーメッセージ
エラーメッセージは出ないのですが、下記のようにデバック情報でpermittedがfalseになっています。
また、見本画面にはないparameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccessが出力されています。
--- !ruby/object:ActionController::Parameters parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess controller: users action: show id: '1' permitted: false
該当のソースコード
views <header class="navbar navbar-fixed-top navbar-inverse"> <div class="container"> <%= link_to "sample app", root_path, id: "logo" %> <nav> <ul class="nav navbar-nav navbar-right"> <li><%= link_to "Home", root_path %></li> <li><%= link_to "Help", help_path %></li> <% if logged_in? %> # ログインしているとき <li><%= link_to "Users", '#' %></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> Account <b class="caret"></b> </a> <ul class="dropdown-menu"> <li><%= link_to "Profile", current_user %></li> <li><%= link_to "Settings", '#' %></li> <li class="divider"></li> <li> <%= link_to "Log out", logout_path, method: :delete %> </li> </ul> </li> <% else %> # ログインしていないとき <li><%= link_to "Log in", login_path %></li> <% end %> </ul> </nav> </div> </header>
helper module SessionsHelper def log_in(user) session[:user_id] = user.id end def current_user if session[:user_id] @current_user ||= User.find_by(id: session[:user_id]) end end def logged_in? !current_user.nil? end end
users_controller.rb class UsersController < ApplicationController def new @user = User.new end def show @user = User.find(params[:id]) end def create @user = User.new(user_params) if @user.save flash[:success] = "Welcome to the Sample App!" redirect_to @user else render 'new' end end private def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation) end end
routes.rb Rails.application.routes.draw do root 'static_pages#home' get '/help', to: 'static_pages#help' get '/about', to: 'static_pages#about' get '/contact', to: 'static_pages#contact' get '/signup', to: 'users#new' post '/signup', to: 'users#create' get '/login', to: 'sessions#new' post '/login', to: 'sessions#create' delete '/logout', to: 'sessions#destroy' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html resources :users end
application.js // This is a manifest file that'll be compiled into application.js, which will include all the files // listed below. // // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's // vendor/assets/javascripts directory can be referenced here using a relative path. // // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the // compiled file. JavaScript code in this file should be added after the last require_* statement. // // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details // about supported directives. // //= require rails-ujs //= require jquery //= require bootstrap //= require turbolinks //= require_tree .
sessions_controller.rb class SessionsController < ApplicationController def new end def create user = User.find_by(email: params[:session][:email].downcase) if user && user.authenticate(params[:session][:password]) log_in user redirect_to user else flash.now[:danger] = 'Invalid email/password combination' render 'new' end end def destroy end end
試したこと
・jsのライブラリも追加し、scssのファイルもいじってみましたが反映されません。
・新しいユーザーを登録してログインしても反映されませんでした。
・permitted: falseは許可されていないデータ?という意味みたいですが、有効なメールアドレスやパスワードを使っています。
補足情報(FW/ツールのバージョンなど)
Rails 5.1.7
回答2件
あなたの回答
tips
プレビュー