前提・実現したいこと
vue-pollのライブラリを使用して、アンケート投票を実装したいですが、
ロジックが思い浮かばないのでどなたかアドバイスを頂けますでしょうか。
実装したい機能は
①ユーザーが新規作成ページから自分でアンケートを作成できる
②過去に実施されたアンケートを一覧でみることができる&投票できる
vue-pollのサンプルコード(公式に載っているものです)
vue
1<template> 2 <div class="section"> 3 <vue-poll v-bind="options" @addvote="addVote()"></vue-poll> 4 </div> 5</template> 6 7<script> 8export default { 9 data() { 10 return { 11 options: { 12 question: "What's your favourite <strong>JS</strong> framework?", 13 answers: [ 14 { value: 1, text: "Vue", votes: 53 }, 15 { value: 2, text: "React", votes: 35 }, 16 { value: 3, text: "Angular", votes: 30 }, 17 { value: 4, text: "Other", votes: 10 }, 18 ], 19 }, 20 }; 21 }, 22 methods: { 23 addVote(obj) { 24 console.log("You voted " + obj.value + "!"); 25 }, 26 } 27</script>
考えたこと
①あらかじめユーザーが作ったアンケートを格納するテーブル(例えばquestionnariesテーブル。属性は、id
value
text
votes
を想定)をRailsに作っておく。
②新規登録ページからユーザーがアンケートを作成したら、axios.post
でquestionnariesテーブルにcreate
する。
③一覧表示のときにはaxios.get
で表示させる
④投票の時は、選択肢を選ぶとaxios.post
が実行されて、レコードが増えていく。
⑤script内のvotesに、Rails内のレコード数を引っ張ってくれば結果が表示される
というのを考えてみました。
しかし、これだとアンケートの種類が一つだけならうまくいきそうな気がしますが、
種類が増えた時(例えば、「好きな言語は?」というアンケートと、「好きな食べ物は?」という全く別のアンケート)は、アンケートのデータが1つのテーブルに混載することになるため上手くいかないかと思います。
vuex
も考えましたが、データを保持し続けられないのでやはりRails側へ保存させるべきだと考えました。
なにかアドバイスを頂けますと幸いです。
参考にしたサイト
https://www.kabanoki.net/7836/
公式のサンプル通りの実装は載っていましたが、肝心なカスタマイズの方法はググってもヒントは得られませんでした。
サンプルのように、もとからvotes
に値を入れてしまったら投票でもなんでもなくなってしまうので。。。
補足情報(FW/ツールのバージョンなど)
Ruby 2.7.2
Rails 6.0.3.4
Vue 2.6.12
あなたの回答
tips
プレビュー