実現したいこと
Historyというモデルがあります。HistoryはUserモデルと1対多の関係になっていて、カラムとしてはcontentとuser_idを持っています。
ログインユーザーがVue側でinputでcontentを入力したとき、ログインユーザーのuser_idも同時に渡したいのですが、vue側でどのように書けば良いのかわかりません。
rails側ではヘルパーでcurrent_userを定義しているので、current_userとすればログインユーザーを識別できますが。
histories_controller
class Api::V1::HistoriesController < ApplicationController def create @history = History.new(history_params) if @history.save head :no_content else render json: @history.errors, status: :unprocessable_entity end end private def history_params params.require(:history).permit(:content, :user_id) end end
histories.vue
<template> <div> <form> <input type='textarea' name='history[content]' v-model='content'> <input type='hidden' name='history[user_id]' value="#{current_user.user_id}" v-model='user_id'> <button @click='history_create' type="submit">検索</button></span> </form> </div> </template> <script> import axios from 'axios'; axios.defaults.headers.common = { 'X-Requested-With': 'XMLHttpRequest', 'X-CSRF-TOKEN' : document.querySelector('meta[name="csrf-token"]').getAttribute('content') }; export default { data: function(){ return{ content: '', user_id: document.querySelector("[v-model='user_id']").value } }, methods: { history_create: function(){ axios .post('/api/v1/histories.json',{ history: { content: this.content, user_id: this.user_id } }) } } } </script>
data: functionのuser_idを'1'とするとuser_idが1のユーザーのデータが保存されるので、一応フォームとして機能はしている認識です。
あなたの回答
tips
プレビュー