質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1919閲覧

rails ログイン後に表示されるようにしたヘッダーの中身が、リンクを飛ぶと消えてしまう

lucky_luci

総合スコア18

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/08/09 08:17

初心者です。
layout内のapplication.html.erbでheaderを統一しています。
login後、index.htmlでは、表示されるのですが、そこからリンクでshow.htmlへ飛んでも、同じように表示されるようにするにはどうすれば良いでしょうか?リンクからとぶとヘッダー内の要素が全て消えてしまいます。

applicatin.html.erb
<% if user_signed_in? %>

<header> <tr> <% if @g_infos.present? %> <% @g_infos.each do |g_info| %> <div class = "dropdown-header"> <ul class ="responsive-menu"><i class="fas fa-bars"></i></ul> <div class ="dropdown-content-header"> <td><%= link_to 'Mypage', g_info_path(g_info.id) %></td> <a href="#">Chat</a> <td><%= link_to 'News', news_path(g_info.id) %></td> <td><%= link_to 'Q&A', questions_path %></td> <td><%= link_to "LOGOUT", logout_path %></td> </div> </div> <ul class ="logo"><a href="/g_infos">JAPA<span>N</span>IGHT</a></ul>
<ul class ="header-username"><%= g_info.name %></ul> <ul class ="mypagecommand"><%= link_to 'Mypage', g_info_path(g_info.id) %></ul> <ul ul class ="mypagecommand"><a href="#">Chat</a></ul> <ul class ="mypagecommand"><%= link_to 'News', news_path(g_info.id) %></ul> <ul class ="mypagecommand"><%= link_to 'Q&A', questions_path %></ul> <ul class ="mypagecommand"><%= link_to "LOGOUT", logout_path %></ul> <% end %> <% end %>
</tr> </header> <% end %>

<% if current_user == nil %>

<header> <tr> <div class = "dropdown-header"> <ul class ="responsive-menu"><i class="fas fa-bars"></i></ul> <div class ="dropdown-content-header"> <%= link_to 'SIGNUP' ,new_guide_path %> <a href="#">LOGIN</a> </div> </div> <ul class ="logo"><a href="/g_infos">JAPA<span>N</span>IGHT</a></ul> <ul class ="login"><%= link_to 'LOGIN', login_path %></ul> </tr> </header> <% end %>

g_infos_controller.erb
lass GInfosController < ApplicationController
before_action :set_g_info, only: [:show, :edit, :update, :destroy]

GET /g_infos

GET /g_infos.json

def index
@g_infos = GInfo.all

end

GET /g_infos/1

GET /g_infos/1.json

def show

@g_info = GInfo.find(params[:id])

end

GET /g_infos/new

def new
@g_info = GInfo.new
end

GET /g_infos/1/edit

def edit

@g_info = GInfo.find(params[:id])

end

routes.rb
Rails.application.routes.draw do
resources :news
resources :questions
resources :g_infos
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
devise_for :admin_users
resources :guides
devise_for :users

For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html

root 'g_infos#index'

get "/" => "g_infos#index"
get "/g_infos/new" => "g_infos#new"
get '/g_infos/:id' => 'g_infos#show'
get '/g_infos/:id/edit' => 'g_infos#edit'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

header に <% if @g_infos.present? %> とありますが

def index @g_infos = GInfo.all end def edit @g_info = GInfo.find(params[:id]) end de f show @g_info = GInfo.find(params[:id]) end

と、@g_infos が定義されているのはindexだけだからです。
edit、show でも定義して下さい。

controller に
before_action :set_g_infos
として、

def set_g_infos @g_infos = GInfo.all end

としておくのが手間がないかな

投稿2019/08/09 08:38

winterboum

総合スコア23329

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lucky_luci

2019/08/09 08:53

ありがとうございます!解決しました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問