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

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

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

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

Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

Ruby on Rails 6

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

Ruby on Rails

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

Q&A

解決済

1回答

2479閲覧

vue.js(vue router)でパスは変わるが画面遷移ができない

widget11

総合スコア221

Vue.js

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

Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

Ruby on Rails 6

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/02/16 08:24

編集2021/02/16 19:33

2/17追記(router-viewとrouter.jsの修正)

###環境、ファイル構成
ruby on rails 6
vue.js
vue-router
axios

app
・javascript
・・login.vue
・・Users.vue
・・routes
・・・login_router.js
・・packs
・・・login.js
###やりたいこと
ログイン画面(login.vue)からログインして成功(200が返される)したら、router.pushを用いてUsers.vueという画面に遷移し表示を行いたい。(vue-routerを用いたSPAを想定してます)

###問題
ログイン成功後router.pushによりusers.vueを呼び出しているのは確認できる(users.vueのscript書いてあるgetメソッド呼び出される)が、画面が切り替わらずログイン画面のままでrouter-viewタグを記載しているがusers.vueのviewが描画されない。
またurlが少し変化するのみで画面の遷移はされない。
http://localhost:3000/api/v1/auth/sign_in#/ => http://localhost:3000/users

該当のソースコード

//login_lougter.js import Vue from "vue"; import Router from "vue-router"; Vue.use(Router); import users from "../Users.vue"; const router = new Router([ { path: "/users", name: "User", component: users, } ]); const route = new Router({ routes: route, base: process.env.BASE_URL, mode: 'history' }); export default route;
<!-- login.vue --> <template> <div> <div id="login"> <el-form> <el-form-item label="メールアドレス" prop="email"> <el-input id="email" type="email" v-model="email" autocomplete="off"></el-input> </el-form-item> <el-form-item label="パスワード" prop="password"> <el-input id="password" type="password" v-model="password" autocomplete="off"></el-input> </el-form-item> <el-button type="primary" @click="onSubmit" >ログイン</el-button> </el-form>        <router-view/> ⭐️追記 </div> </div> </template> <script> import axios from 'axios'; import router from './router/login_router.js'; export default{ data: function() { return{       /* 省略 */ } }, methods: { onSubmit: function() { axios .post("http://localhost:3000/api/v1/auth/sign_in", { email: this.email, password: this.password, }) .then((response) => { ⭐️ router.push('/users');⭐️/*ここで画面遷移を行いたい*/ }) .catch(error => { alert(error); }) } } } </script>
//users.vue <template> <div id="users"> users </div> </template> <script> import axios from 'axios'; export default { name: "users", data: function() { return{ users: "", } }, methods:{ async getAccountData() { ⭐️ axios .get('http://localhost:3000/api/v1/users');  /* このメソッドは呼び出せているがhtmlが描画されない*/⭐️ } }, async mounted(){ this.getAccountData(); }, } </script>

とりあえずログインフォームから、Users.vueに記載されているようにusersという文字列が表示されたら個人的に成功なのですが
users.vueのスクリプトは呼び出しているが画面が切り替わらず、そのままな理由がわかりません。
users.vueの画面( html)を表示するにあたり、何か記載が足らない箇所があるのでしょうか?
追記修正依頼は随時承っております。
お手数をおかけしますが、よろしくおお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

login_router.jsの書き方を間違っていました。

投稿2021/02/17 19:18

widget11

総合スコア221

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問