【发布时间】:2023-03-25 19:30:02
【问题描述】:
你好>我正在创建一个包含书籍和用户的 Javascript SPA/Rails Api。我在路由中使用命名空间,以及每个模型的序列化程序。我不确定为什么在尝试为用户执行 post fetch 请求时出现此错误。我不确定我的书是否会遇到同样的问题。 Belo 你可以看到我的控制器顶部的每个控制器都有 Api::V1....等。然后我在我的路线中有我的命名空间路线。我的 Rails 控制台也在运行
路由错误 未初始化的常量Api
我的控制器
class Api::V1::UsersController < ApplicationController
def index
users=User.all
render json: users
end
def create
if User.find_by(:name=> user_params[:name])
user=User.find_by(:name=>user_params[:name])
redirect_to "/api/v1/users/#{user.id}"
else
user = User.create(user_params)
user.save!
render json: user
end
end
def show
user = User.find_by(:id => params[:id])
render json: user
end
private
def user_params
params.require(:user).permit(:name)
end
end
class Api::V1::BooksController < ApplicationController
def index
books = Book.all
render json: books
end
def create
book = Book.create(book_params)
book.save!
render json: book
end
def destroy
book=Book.find_by(:id => params[:id]).destroy
render json: book
end
private
def book_params
params.require(:book).permit(:title,:author,:review,:rating,:user_id)
end
end
路线
Rails.application.routes.draw do
namespace :api do
namespace :v1 do
resources :books
end
end
end
//POST fetch for creating a User
static createUser(user) {
let newUserForm = document.getElementById('new-user-form')
newUserForm.addEventListener('submit', function(e){
e.preventDefault();
fetch('http://localhost:3000/api/v1/users', {
method: 'POST',
headers: {
'Content-Type' : 'application/json',
'Accept' : 'application/json'
},
body: JSON.stringify({
user: {
name: e.target.children[1].value
}
})
})
.then(res => {
if (!res.ok) {
throw new Error(); // Will take you to the `catch` below
}
return res.json();
})
.then (user => {
let newUser = new User(user)
console.log(user)
newUser.displayUser();
})
.catch(error => {
console.error('User class Error', error)
})
})
}
【问题讨论】:
标签: javascript ruby-on-rails routes rails-api javascript-namespaces