【Rails+Vue】Rails⇔Vue間のデータの送受信

Vue→Rails

以下のようなストロングパラメータが設定されているとき、params[:user][:name]などといった二重ハッシュである必要がある。

def user_params
  params.require(:user).permit(:name, :email)
end

このとき、axiosの引数は以下のような構造にすればOK。

axios.post('/api/users', {
  user: {
     name: 'foobar',
     email: '...'
  }
})

Rails→Vue

Railsからはrender jsonJSONオブジェクトを渡す。

def create
  if user.create
    render json: user
  else
    render json: user.errors, status: :bad_request
  end
end

# headで特定のstatusを返す
def authenticate!
  return if current_user
  head :unauthorized
end