我是Rails的新手,正在构建一个将用作API的Rails应用程序。目前,我没有任何模型或数据库,只是一个Api::ProductController
控制器:
class Api::ProductController < ApplicationController
def create
Rails.logger.info "product was created and the parameters are #{product_params[:name]}, #{product_params[:age]}"
end
private
def product_params
params.permit(:name, :age)
end
end
。当我继续并编写请求Rspec时:
RSpec.describe Api::productsController, type: :request do
it "creates a product" do
post "/api/products", params: { name: "name", age: "22"}
expect(response).to have_http_status(:created)
expect(response.body).to include("product was successfully created.")
end
end
但是当我在命令行上运行请求rspec测试时,出现以下错误:
Failure/Error: expect(response).to have_http_status(:created)
expected the response to have status code :created (201) but it was :no_content (204)
我的问题是如何将状态代码设置为:created(201)? Head方法是一个好方法吗?任何解决方案或指导将不胜感激!
答案 0 :(得分:0)
返回创建项目的json表示很常见。 现在,您的操作中没有返回数据。
尝试使用render json: product_params.to_json, status: :created
答案 1 :(得分:0)
def create
Rails.logger.info "product was created and the parameters are #{product_params[:name]}, #{product_params[:age]}"
render status: :created
end