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

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

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

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

Ruby

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

Ruby on Rails

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

JavaScript

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

Q&A

0回答

2173閲覧

Vue.jsとRailsでコンポーネントの切り分け?ができなくて困っています。

ryoma510

総合スコア29

Vue.js

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

Ruby

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

Ruby on Rails

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

JavaScript

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

0グッド

3クリップ

投稿2017/09/07 06:01

こちらのQiitaの記事を参考にしてVue.jsとRailsとAjaxを組み合わせたアプリケーションを作成しています。サイト通りに動かすことはできたのですが、これを少し改良したいと思っています。

GIFで動きを撮りましたこちらのGyazoをみてください

具体的には

このようにしたいです。

現在のコードは

index.html.slim

html

1.container.js-booksIndex 2 .row 3 - @books.each do |book| 4 .card 5 span.card-title v-on:click="setBookInfo(#{book.id})" 6 = book.title 7 8 .row.info v-show='bookInfoBool' 9 .card-content.white-text 10 span.card-title 11 = "Title: {{ bookInfo.title }}" 12 .detail 13 = "Author: {{ bookInfo.author }}" 14 .detail 15 = "Publisher: {{ bookInfo.publisher }}" 16 .detail 17 = "Genre: {{ bookInfo.genre }}" 18 19= javascript_pack_tag 'books/index' 20

index.js

js

1import Vue from 'vue/dist/vue.esm'; 2import axios from 'axios'; 3 4new Vue({ 5 el: '.js-booksIndex', 6 data: { 7 bookInfo: {}, 8 bookInfoBool: false 9 }, 10 methods: { 11 setBookInfo(id){ 12 axios.get(`api/books/${id}.json`) 13 .then(res => { 14 this.bookInfo = res.data; //res.dataにjson形式の詳細ののデータが入っている 15 this.bookInfoBool = true; 16 }); 17 } 18 } 19}); 20

books_controller.rb

ruby

1class Api::BooksController < ApplicationController 2 def show 3 @book = Book.find(params[:id]) 4 render 'show', formats: 'json', handlers: 'jbuilder' 5 end 6end 7

json

1json.title @book.title 2json.author @book.author 3json.publisher @book.publisher 4json.genre @book.genre 5

となっています。
これを最初に説明したようなものにしたいのですが、それぞれのauthorに対してbookInfoBoolに当たるような真偽値を割り振って管理しようと思ったのですが、RailsとJS側でやり取りの仕方がうまく思いつかなくて詰まっています。

author一つ一つをcomponentとして扱って管理できそうですが、具体的なやり方になるとどう書けばいいのかがわかりません。
どなたか教えていただけないでしょうか?

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問