Jbuilder использует запрос POST к API в Ruby On Rails
Я пытаюсь разделить Backend и Frontend в своем проекте, используя Rails и ReactJS.
И у меня есть функция, чтобы сделать асинхронную обработку для POST
запросить и использовать гем 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
если у меня есть _deal.json.jbuilder
файл в views/deals
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
файл, я получу {}
нулевой объект.
почему проблема происходит?
1 ответ
Эта строка:
format.json { render :show, status: :created, location: @deal }
Говорит Rails, чтобы сделать ваш show
посмотреть на JSON, который, вероятно, загружает ваш app/views/deals/show.json.jbuilder
Посмотреть; эта точка зрения, скорее всего, просто делает ваш _deal
частично. Удаление частичных приводит к тому, что это определение представления становится недействительным.
Поэтому не удаляйте частичное, если вы не готовы обновить шаблоны, которые к нему относятся.