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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuetify.js

Vuetify.jsは、マテリアルデザインを基本とするVue.jsのCSSフレームワークです。多くのマテリアルデザインのコンポーネントを提供しており、あらゆるアプリケーションに対応可能。vue-cli用テンプレートがあり、簡単にページを作成できます。

Ruby on Rails 6

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

724閲覧

RailsにVue.jsのコンポーネントを部分的に導入したが、ページ遷移した際にjavasript_pack_tagの読み込み直しをして欲しい。

fujicho

総合スコア17

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuetify.js

Vuetify.jsは、マテリアルデザインを基本とするVue.jsのCSSフレームワークです。多くのマテリアルデザインのコンポーネントを提供しており、あらゆるアプリケーションに対応可能。vue-cli用テンプレートがあり、簡単にページを作成できます。

Ruby on Rails 6

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/07/11 12:54

困っていること

Rails(apiではない)のviewにVue.jsのコンポーネントを一部分導入しました。
Vue導入前は部分テンプレート_header.html.erbを作成し
view/layout/application.html.erbに

ruby.

1<body> 2 <%= render "shared/header" %> 3 <%= yield %> 4</body>

とし、ヘッダーはそのまま表示し続け、yieldで中身を変えていました。
今回ヘッダーのみVueでコンポーネントを作成してみたのですが、ページ遷移するとyieldは正常に切り替わるのですが、ヘッダーのコンポーネントは表示されず消えてしまいます。
また、その遷移先で更新ボタンを押すと再びヘッダーが表示されます。
yieldを切り替えた際headerを表示し続ける、あるいは読み込み直しをするにはどう記述すればいいのでしょうか。

各記述

view/layout/application.html.erb

ruby.

1<!DOCTYPE html> 2<html> 3 <head> 4 <%= csrf_meta_tags %> 5 <%= csp_meta_tag %> 6 <%= javascript_pack_tag 'user_header', 'data-turbolinks-track': 'reload' %> 7 </head> 8 9 <body> 10 <navbar></navbar> 11 <%= yield %> 12 </body> 13</html>

javascript/packs/user_header.js

javascript.

1import Vue from 'vue' 2import Header from './components/header.vue' 3import vuetify from './vty' 4 5document.addEventListener('DOMContentLoaded', () => { 6 const app = new Vue({ 7 vuetify, 8 components: { 9 'navbar': Header 10 }, 11 render: h => h(Header), 12 }).$mount('#app') 13 14 console.log(app) 15})

javascript/packs/vty.js(vuetify導入用)

javascript.

1import Vue from 'vue' 2import Vuetify from 'vuetify' 3import "vuetify/dist/vuetify.min.css" 4 5Vue.use(Vuetify) 6 7export default new Vuetify({ 8 9})

javascript/packs/components/header.vue

javascript.

1<template> 2 <div id="app"> 3 <header> 4 <h1> 5 <a href="/">Home</a> 6 </h1> 7 <nav> 8 <ul> 9 <v-btn href="/account" text color="primary" dark large>アカウント</v-btn> 10 <v-btn href="/session" text data-method="delete" color="primary" dark large>ログアウト</v-btn> 11 </ul> 12 </nav> 13 </header> 14 </div> 15</template> 16 17<script> 18</script> 19 20<style> 21header { 22 width: 100%; 23 padding: 10px 4% 10px; 24 background-color: #2196F3; 25 position: fixed; 26 top: 0; 27 display: flex; 28 align-items: center; 29 } 30h1 31 { 32 margin: 0; padding: 0; 33 font-size: 20px; 34 } 35a { 36 text-decoration: none; 37 color: #ffffff; 38 } 39ul { 40 list-style: none; 41 margin: 0; 42 display: flex; 43} 44li { 45 margin: 0 0 0 15px; 46 font-size: 14px; 47} 48nav { 49 margin: 0 0 0 auto; 50 } 51</style>

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問