Railsでjavascriptファイルの使用法について質問
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 401
Rails(バージョン6.0)でjavascriptファイルを使用するため、次の処理をしました。
1.次のコマンドで、コントローラの作成をする。
rails generate controller hellojs2 index
2.「app/views/hellojs2/index.html.erb」を次の通りとして保存する。
<%= javascript_include_tag "hellojs2.js" %>
3.「app/assets/javascripts」のパスを作成し、そのパスに「hellojs2.js」のファイルを次の通り作成する。
document.write("Hello, World(javascript)!");
4.「app/assets/config/manifest.js」のファイルに次の行を追加する。
//= link hellojs2.js
こうした後、サーバーを起動して、Web画面を表示すると、「Hello, World(javascript)!」の表示がされました。
皆さんにお聞きしますが、これで合っているのでしょうか?(もっとよい方法があれば教えてください)
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
check解決した方法
0
KTOHさん そして m.ts10806さん、ありがとうございます。
確かに情報が少なくてすみませんでした。
私は、rails(Ver6.0.0)でjavascriptのプロジェクトを作成しようとしていました。
初めに試したことは、
1.「app/views/hellojs2/index.html.erb」を次の通りとする。
<script>
document.write("Hello, World(javascript)!");
</script>
こうした後、サーバーを起動すると、画面に「Hello, World(javascript)!」の表示がされました。
これが、私の思っていた通りのことです。
次にjsファイルを作成する方法を試してみようとしました。(これが上記とおなじです)
1.「app/views/hellojs2/index.html.erb」を次の通りとする。
<%= javascript_include_tag "hellojs2.js" %>
2.「app/views/hellojs2/index.html.erb」を次の通りとして保存する。
<%= javascript_include_tag "hellojs2.js" %>
3.「app/assets/javascripts」のパスを作成し、そのパスに「hellojs2.js」のファイルを次の通り作成する。
document.write("Hello, World(javascript)!");
ここまでの処理で、サーバーを起動すると、画面にエラーメッセージが表示されました。
ログを見ると、次のようなメッセージが表示されました。(画面エラーの内容もこれとほぼ同じ)
ActionView::Template::Error (Asset hellojs2.js
was not declared to be precompiled in production.
Declare links to your assets in app/assets/config/manifest.js
.
//= link hellojs2.js
and restart your server):
1: <%= javascript_include_tag "hellojs2.js" %>
app/views/hellojs2/index.html.erb:1
Started GET "/hellojs2/index" for 127.0.0.1 at 2019-11-14 11:05:35 +0900
[1m[35m (0.3ms)[0m [1m[34mSELECT sqlite_version(*)[0m
Processing by Hellojs2Controller#index as HTML
Rendering hellojs2/index.html.erb within layouts/application
Rendered hellojs2/index.html.erb within layouts/application (Duration: 56.9ms | Allocations: 11512)
Completed 500 Internal Server Error in 80ms (ActiveRecord: 0.0ms | Allocations: 13445)
ここで、このメッセージにあるように次の修正をしました。
1.「app/assets/config/manifest.js」のファイルに次の行を追加する。
//= link hellojs2.js
(ワイルドカード(*)は使用できない)
こうした後、サーバーを起動すると、画面に「Hello, World(javascript)!」の表示がされました。
これが、私の思っていた通りのことです。
私が疑問に起こったことは、
「なぜくなったかの理由がはっきりしないし、HPには、この方法が記載されていない。」ということです。
だから、これでいいのか、という質問をしました。
尚、もう少し調べたところ、次のことがわかりました。
1.エラーの原因は、「プリコンパイルできていない」ということである。
2.プリコンパイルする方法として、次の方法もある。
「config/initializers/assets.rb」のファイルに次の行を追加する。
Rails.application.config.assets.precompile += %w( hellojs2.js )
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.34%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
2KOH
2019/11/12 22:25
合っているかどうかは、何を実現したかったのかが記述されていないため不明です。
もしも「Hello, World(Rails)!」と表示させたかったというのであれば、間違っています。
また、もっとよい方法というのも答えられません。
よい方法というのは、より高速に動作する方法でしょうか。
それとも、よりメモリ消費が少なくなる方法でしょうか。
それとも、より記述量が少なくなる方法でしょうか。
それとも、より作業手順が少なくなる方法でしょうか。
それとも、よりファイル数が少なくなる方法でしょうか。
m.ts10806
2019/11/12 23:31
せめてJavaScriptの質問なのかRailsの質問なのかだけでもハッキリしてもらえれば答えやすいのですけど。