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

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

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

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

font

近年は、コンピュータ上、紙面上で利用できる書体データのことをfontといいます。数える時の単位は「書体」で、データとしてのフォントは、デジタルフォントと呼ばれる場合があります。 HTML/CSSでは要素を指定し、フォント情報を調整することができます。

Q&A

解決済

1回答

4203閲覧

【Ruby on Rails】外部から新しいフォントを導入したが反映されない。404エラーが発生する

shota-imoto

総合スコア37

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

font

近年は、コンピュータ上、紙面上で利用できる書体データのことをfontといいます。数える時の単位は「書体」で、データとしてのフォントは、デジタルフォントと呼ばれる場合があります。 HTML/CSSでは要素を指定し、フォント情報を調整することができます。

0グッド

0クリップ

投稿2020/05/17 12:25

編集2020/05/19 23:25

やりたいこと

新しいフォントを導入し、view上に反映させたい

起こっていること

assets内にfontsフォルダを作成し、その中にフォントファイル(ttfファイル)を設置。
@font-faceにてscssファイルに読み込みを実施し、scssで記述。
hamlでクラス付与して画面をリロードするもコンソール上で、ttfが見つからない、と404エラー発生。

#主なソースファイル
##ディレクトリ構造

app ├── assets │   ├── fonts │   │   ├── Dvmarticulations-Yqpy.ttf //←こちらはまだ一度も読み込んでいない。 │   │   └── Musisync-qYy6_base.ttf //←読み込もうとしているフォントファイル │   └── stylesheets │   ├── application.scss │   ├── (中略) │   ├── modules │   │   ├── (中略) │   │   ├── font_read.scss │   │   └── (以下略) │      └──(以下略) ├── (中略) └── views ├── (中略)    ├── songs │   ├── (中略) │   ├── show.html.haml │   └── (以下略)    └── (以下略)

##stylesheet>modules>font_read.scss:@fontfaceによる読込み

scss

1// ↓これから読み込むフォントファイル 2@font-face { 3 font-family: "score-base"; 4 src: font-url("Musisync-qYy6_base.ttf") format("truetype"); 5 font-weight: normal; 6 font-style: normal; 7} 8 9// ↓未だ読み込んだ実績がない、あとで利用しようとして記述しているフォントファイル 10@font-face { 11 font-family: "score-repeat"; 12 src: font-url("Dvmarticulations-Yqpy.ttf") format("truetype"); 13 font-weight: normal; 14 font-style: normal; 15}

##applicationファイルによる@font-face記述ファイルの読込み

scss

1@import //他にもmodulesフォルダから読み込み実績あり 2@import "modules/font_read"; 3 4.font_base { 5 font-family: "score-base"; 6}

##ビューファイル:Railsヘルパーメソッドとhamlの併用

haml

1.content__chord 2 - @song.chords.each do |chord| 3 - chord_array = chord.text.split(//) 4 - chord_array.each do |char| 5    -#↓フォント読み込み用のクラスを付与 6 %a.font_base 7 =char 8 %br

##その他
フォント導入にあたって参考にしたWebの記事
Qiita

#仮説と検証
##アセットパイプラインへの追加
web-fonts-asset-pipeline
GitHubにて、assets中のfontsファイルをアセットパイプラインへの追加するために記述が必要、という情報がありました。

terminal

1├── app 2└── config 3    ├── application.rb 4 └── (以下略)

config>application.rbに追記したものが下記

rails

1require_relative 'boot' 2require 'rails/all' 3Bundler.require(*Rails.groups) 4 5module GrassChords 6 class Application < Rails::Application 7 config.load_defaults 5.2 8 config.time_zone = 'Asia/Tokyo' 9 config.i18n.default_locale = :ja 10 # ↓追加の記述 11 config.assets.paths << Rails.root.join("app", "assets", "fonts") 12 end 13end

→結果:変化なし
##@font-face中のformat()の使い方間違い?
呪文としてコピペしていたので確認
CSS Web Fonts
ファイル形式を選択するものと判断。
ttf=true type fontなので問題なし、と判断

###scssファイルの保存場所がまずい?
@font-face中でsrcを指定しているfont-url記述にはファイル名しか書かれていない。
modulesの中のファイルに@font-faceを記述しているのがまずいのではないか
###modle>font-_readの記述をapllication.scssに移動
→結果:変化なし

###src指定の方法をfont-urlからurlに変更

scss

1url("/assets/fonts/Musisync-qYy6_base.ttf")

と記述。
→結果:変化なし

##まだ試していない妥協案
Rails6にて同じ症状の質問を発見
Teratailで似たような症状の質問を発見。

/public下にfontsフォルダを置き、/fonts/ファイル名とすることで読み込み。
publicフォルダが散らかっていくことに抵抗があるため、こちらの手法はあとで検討したいと思います。

##補足
それぞれ単体で試しましたがアセットパイプラインへの追加のための記述だけは常に有りのまま進めています。

#補足情報(FW/ツールのバージョンなど)
##開発環境

  • OS macOS Catalina (10.15.4)
  • VScode (1.45)

※develop環境でのみ動作確認しています。
##ソフトウェアバージョン

  • ruby 2.5.1p57
  • rails (5.2.4.2)
  • haml (5.1.2)
  • haml-rails (2.0.1)
  • mysql2 (0.5.3)
  • sass (3.7.4)
  • sass-rails (5.1.0)
  • 他にjQueryを併用しています

以上です。
ご教示のほど、よろしくお願いいたします。

#追記
##使用フォント
MusiSync Font
画面上にコード譜を表示するために音楽記号が使えるようなフォントを使用しています。

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

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

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

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

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

guest

回答1

0

自己解決

質問早々、申し訳ないのですが、rails sでサーバ再起動したら読み込めました汗
アセットパイプラインへの追記はなしでも反映されました(サーバ再起動して確認済)

結局、何が原因だったのか・・・。
view

投稿2020/05/19 23:35

shota-imoto

総合スコア37

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問