🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Q&A

解決済

3回答

2188閲覧

Rails チュートリアル5章で詰まりました、、、 application.html.erbが適用されないから適用させたい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

0グッド

0クリップ

投稿2020/11/24 06:18

編集2020/11/24 08:20

Railsチュートリアル第5章の内容です。

画像のように表示させたいのですが、application.html.erbが適用されず、static_pagesのhome.html.erbしか表示されません。
![イイメージ説明
rails s によって起動させた自分の表示内容(localhost:3000)
イメージ説明

application.html.erbの記述 <!DOCTYPE html> <html> <head> <title><%= full_title(yield(:title)) %></title> <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= stylesheet_link_tag 'application', media: 'all','data-turbolinks-track': 'reload' %> <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> <!--[if lt IE 9]> <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/r29/html5.min.js"> </script> <![endif]--> </head> <body> <header class="navbar navbar-fixed-top navbar-inverse"> <div class="container"> <%= link_to "sample app", '#', id: "logo" %> <nav> <ul class="nav navbar-nav navbar-right"> <li><%= link_to "Home", '#' %></li> <li><%= link_to "Help", '#' %></li> <li><%= link_to "Log in", '#' %></li> </ul> </nav> </div> </header> <div class="container"> <%= yield %> </div> </body> </html>
home.html.erbの記述 <div class="center jumbotron"> <h1>Welcome to the Sample App</h1> <h2> This is the home page for the <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a> sample application. </h2> <%= link_to "Sign up now!", '#', class: "btn btn-lg btn-primary" %> </div> <%= link_to image_tag("rails.svg", alt: "Rails logo", width: "200px"), "https://rubyonrails.org/" %>
application_controller.rbの記述 class ApplicationController < ActionController::Base def hello render html: "hello" end end
routes.rbの記述 Rails.application.routes.draw do root 'static_pages#home' get 'static_pages/home' get 'static_pages/help' get 'static_pages/about' end

イメージ説明
static_pages_contoroller.rbの内容です
イメージ説明

やってみたこと

・application_controller.rbのrender の記述の部分にlayout:trueを指定して見ると適用されるという記述を見て書きましたが変わらずでした。

def hello render html: "hello",layout:true←この部分 end

・Railsチュートリアルの5章までを見直して、ファイルの記述ミスがないかなどをしらべました。(ファイルの理解が不十分なところがあるため、よくないと知りつつファイルをコピーしています)

・Rails application.html.erb 適用されないで似たような記事をいくつかみましたが改善できませんでした。

・rails application.html.erbを検索して役割を再確認

・rails html.erb 適用させたいでなにか出てこないか検索→良いサイト見つけられず

自分が原因だと思うこと

・layoutを指定しない限りデフォルトでapplication.html.erbが適用され、 <%= yield %>の部分にアクションによってviewsファイルのそれぞれの内容が入るという認識なので(間違っていたら指摘いただければ幸いです)、デフォルトがstatic_pagesのhome.html.erbになっている??

今回はじめての質問なんですが、次からはこうしたほうがいい等アドバイスがありましたら、参考して改善していきたいので、言っていただければありがたいです。

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

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

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

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

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

maisumakun

2020/11/24 06:50

・どのURLにアクセスしてその表示となったのですか? ・static_pages_controllerはどのようになっていますか?
m.ts10806

2020/11/24 06:54

render html: "hello" ↑これだとhomeではなくhelloが呼び出されるのでは。 あとStaticPagesControllerのコードはないですか?
maisumakun

2020/11/24 08:23 編集

> ↑これだとhomeではなくhelloが呼び出されるのでは。 「hello」とだけ出力されるような気がします。
退会済みユーザー

退会済みユーザー

2020/11/24 08:25

localhost:3000のurlのアクセスして出ました。 記述の内容がhome.html.erbの内容だったので、homeが呼び出されてしまいます。 すみません、MVCの理解の概念が自分はまだ未熟なようです、何故かをいうことができません、、
guest

回答3

0

こういうときにありがちなのは、

  • application.html.erbのファイル名が間違っている
  • ファイルを編集したが上書き保存を忘れている

あとは、railsの再起動を行うとなぜか直るパターンもあります。

投稿2020/11/24 09:53

asm

総合スコア15149

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

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

退会済みユーザー

退会済みユーザー

2020/11/25 16:05

解答ありがとうございました。 基本的なミスでした、自分の基本の定義を疑うよう改善します
guest

0

ベストアンサー

application_helpre.rbの記述ミスで、エラーが出ていたためレイアウト側に反映されていませんでした。

application_helper.rbの記述 正しい記述 module ApplicationHelper # ページごとの完全なタイトルを返す def full_title(page_title = '') base_title = "Ruby on Rails Tutorial Sample App" if page_title.empty? base_title else page_title + " | " + base_title end end end

自分の間違っていた記述

module ApplicationHelper #ページごとの完全他タイトルを返す def full_title(page_title = ")←引数の部分のクォーテーションの構文ミス base_title = "Ruby on Rails Tuutorial Sample App" if page_title.empty? base_title else page_title + "|" + base_title end end end

 railsチュートリアル側では、シングルクォーテーションで記入されていましたが、自分はダブルクォーテーションを一つ消して""の状態が正しいのに"だけにしていました。
シングルクォーテーションなら'',ダブルクォーテーションなら""の話なのに、例題通りに記入すること、それができてないかを考えてばかりで、基本の構文のルールなどはできていると疑ってなかったです。(写しすらできてなかったわけですが、、)
初歩的なミスでお騒がせしてすみませんでした、解答してくださった方々ありがとうございました!!!!!

投稿2020/11/25 16:02

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

(勘違いでしたので除去)

投稿2020/11/24 08:26

編集2020/11/24 08:38
maisumakun

総合スコア145975

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

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

maisumakun

2020/11/24 08:35

なお、ApplicationController#helloは、おそらくどこからも呼ばれていません。
退会済みユーザー

退会済みユーザー

2020/11/24 08:36

application.html.erbの <header class="navbar navbar-fixed-top navbar-inverse"> <div class="container"> <%= link_to "sample app", '#', id: "logo" %> <nav> <ul class="nav navbar-nav navbar-right"> <li><%= link_to "Home", '#' %></li> <li><%= link_to "Help", '#' %></li> <li><%= link_to "Log in", '#' %></li> </ul> </nav> </div> </header> のHTMLが自分の画像に表示されてないのは、なぜなんでしょう?? 正しい例の画像では sample_app ・Home ・Help ・Login が表示されておりその部分に、あとの章でBootstrapが適用されるんですが表示がされないので適用する部分がありません。
maisumakun

2020/11/24 08:40

元の回答は勘違いでしたので消去しました。 views/layouts/application.html.erbを置いた後にサーバの再起動などは行いましたでしょうか?
退会済みユーザー

退会済みユーザー

2020/11/24 08:49

サーバの再起動はしました! vscodeの再起動、ターミナルの再起動などはしてみました!!!
maisumakun

2020/11/24 09:00

(たぶん影響はないと思いますが)ApplicationController内のhelloメソッドを全削除してみたらどうなりますか?
退会済みユーザー

退会済みユーザー

2020/11/24 09:12

変わらなかったです!
maisumakun

2020/11/24 09:14

すみません、ちょっとわからないです。
退会済みユーザー

退会済みユーザー

2020/11/24 09:19

わざわざすみません、親身になってくださり本当にありがとうございました!!! もう一度自分でも考えます!!!
退会済みユーザー

退会済みユーザー

2020/11/25 16:05

解答ありがとうございました。 基本的なミスでした、自分の基本の定義を疑うよう改善します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問