Jbuilder 使用 POST 请求到 API in Ruby On Rails
Jbuilder use POST request to API in Ruby On Rails
我尝试在我的项目中使用 Rails 和 ReactJS 来划分后端和前端。
我有一个函数可以对 POST
请求进行异步处理,并使用 gem Jbuilder
产生 JSON API
JavaScript:
fetch('shops/1/deals',{
method: "POST",
body: JSON.stringify({shop_id: 1, deals_type: "workout"}),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
})
.then(function(res){
console.log(res)
res.json().then(function(data){
alert( JSON.stringify( data ) )
})
})
控制器:
def index
@shop = Shop.find(params[:id])
@deals = @shop.deals
end
def create
@deal = Deal.new(deal_params)
respond_to do |format|
if @deal.save
format.json { render :show, status: :created, location: @deal }
else
format.json { render json: @deal.errors, status: :unprocessable_entity }
end
end
end
如果我在 views/deals
中有 _deal.json.jbuilder
个文件
json.extract! deal, :id, :shop_id, :deals_type, :created_at, :updated_at, :deal_time
我会收到警报{id: number, shop_id: 1, deals_type: "workout", .....}
但是我删除了_deal.json.jbuilder
文件,我会得到{}
个空对象。
为什么会出现这个问题?
这一行:
format.json { render :show, status: :created, location: @deal }
告诉 Rails 为 JSON 呈现您的 show
视图,这可能会加载您的 app/views/deals/show.json.jbuilder
视图;该视图本身可能只是呈现您的 _deal
部分。删除部分会导致该视图定义无效。
因此,除非您还准备更新引用它的模板,否则不要删除部分内容。
我尝试在我的项目中使用 Rails 和 ReactJS 来划分后端和前端。
我有一个函数可以对 POST
请求进行异步处理,并使用 gem Jbuilder
产生 JSON API
JavaScript:
fetch('shops/1/deals',{
method: "POST",
body: JSON.stringify({shop_id: 1, deals_type: "workout"}),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
})
.then(function(res){
console.log(res)
res.json().then(function(data){
alert( JSON.stringify( data ) )
})
})
控制器:
def index
@shop = Shop.find(params[:id])
@deals = @shop.deals
end
def create
@deal = Deal.new(deal_params)
respond_to do |format|
if @deal.save
format.json { render :show, status: :created, location: @deal }
else
format.json { render json: @deal.errors, status: :unprocessable_entity }
end
end
end
如果我在 views/deals
_deal.json.jbuilder
个文件
json.extract! deal, :id, :shop_id, :deals_type, :created_at, :updated_at, :deal_time
我会收到警报{id: number, shop_id: 1, deals_type: "workout", .....}
但是我删除了_deal.json.jbuilder
文件,我会得到{}
个空对象。
为什么会出现这个问题?
这一行:
format.json { render :show, status: :created, location: @deal }
告诉 Rails 为 JSON 呈现您的 show
视图,这可能会加载您的 app/views/deals/show.json.jbuilder
视图;该视图本身可能只是呈现您的 _deal
部分。删除部分会导致该视图定义无效。
因此,除非您还准备更新引用它的模板,否则不要删除部分内容。