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

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

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

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

Ruby on Rails 5

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

Ruby

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2066閲覧

railsでVue.jsが使えない!cdn

dddddsatoki

総合スコア8

Vue.js

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

Ruby on Rails 5

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

Ruby

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/08/13 04:06

https://qiita.com/jnchito/items/30ab14ebf29b945559f6
この記事のようにwebpackerというgemを使ってvueを使う方法があるようですが、

//application.html.erb <script src='https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.10/vue.js'></script>

これをはるのじゃダメなのでしょうか。

実際これで、new.html.erb に下のコードは使えた

<%= form_for(@post) do |f| %> <div id='editor'> <div class="col-md-6"> <textarea name="post[content]" class="form-control" rows="20" v-model='input' debounce='50'></textarea> </div> <div class="col-md-6 box"> <div v-html='input | marked' class="box"></div> </div> </div> <%= f.submit %> <% end %> <script type="text/javascript"> window.onload = function() { new Vue({ el: '#editor', data: { input: '<%== j @post.content %>', }, filters: { marked: marked, }, }); }; </script>

できないことが起きた。

自動で目次を生成したいのだが、

<div class="menu col-md-4"> <li v-for='toc in tocs'> <span>{{ tocs }}</span> </li> </div> <div class="col-md-8 box"> <%= qiita_markdown(@post.content) %> </div> <script type="text/javascript"> (function() { var titles = document.getElementsByTagName('h1'); var titleTextArray = []; var title; for (var i=0; i<titles.length; i += 1) { title = titles[i]; titleTextArray.push({ title: title.hasAttribute('alt-title') ? title.getAttribute('alt-title') : title.innerText, href: title.id }); } var vm = new Vue({ el: '.menu', data: { tocs: titleTextArray } }); })();

これだとうまくいかない、どうしてでしょうか。
javascriptでもエラーが出ているわけではない。
イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

webpackerというgemを使ってvueを使う方法

このgemでは、コンパイルや分割されたファイルの統合的な読込みができます。

vueというライブラリを使用するだけであれば仰る方法で問題ありません。

実装する際に、

  • 機能毎にファイルを分割して、ページ毎に読み込むファイルを変えたい
  • ES6でjavascriptを書きたい
  • .vue ファイルにてvueを書きたい

というような要望がある場合に、webpackerを使用すると良いかと思います。


ソースの状況ですが、まず、
{{ tocs }} という文字がそのまま表示されてしまう
というのは、
Vueによるコンテンツの置き換えが走っていない。
という状況です。

つまり、Vueそのものが稼働していません。

チェックポイントとしては、

  • Vueが正しくnewできているか
  • エレメントの指定が正しく行われているか

という点でしょうか。

検証方法は、

  • Chromeの検証->コンソールで、`new Vue({el: '.menu'}) と実行してみる
  • Vueの中で、created要素を作成し、console.logしてみる

とかでしょうか。

Vueが正しく動いていれば、 {{ tocs }} の部分が置換されたりエラーになったりするはずです。

ちなみに、

v-for='toc in tocs'
の中で表示するのであれば、
{{ toc }}
の方がやりたいことに近いと思うのですがいかがでしょうか?

投稿2018/08/14 00:43

編集2018/08/14 00:44
tashua314

総合スコア145

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

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

dddddsatoki

2018/08/14 05:16

ありがとうございます! 上記の方法色々やってみたのですが、ヘッダー部分に class='menu'を使っていました。 vueの取得部分をidに変更したら成功しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問