У меня есть модель Availability
, я хочу отправить API-запрос на публикацию, чтобы создать несколько возможностей одновременно.
Я наткнулся на этот пост на среднем , и я был так взволнован, что это решит мою проблему, но это не так, потому что автор использует шаблон формы Rails, пока я отправляю свой запрос через API.
Я углубился в документацию , нашел способ создания нескольких записей, попробовал подход и там, но у меня не получилось.
Вот мой код контроллера. Метод create
и метод availability_params
.
module API
module V1
class AvailabilitiesController < ApiController
def create
availability = Availability.new(availability_params)
availability.tutor = current_user
availability.start_time = DateTime.parse("#{availability_params[:day_of_the_week]} #{availability_params[:start_time]}")
availability.end_time = DateTime.parse("#{availability_params[:day_of_the_week]} #{availability_params[:end_time]}")
if availability.start_time < DateTime.current && availability.end_time < DateTime.current
availability.start_time += 1.week
availability.end_time += 1.week
end
if availability.save
render json: {
availability: availability,
message: 'Your availability was created successfully.'
}
else
render json: { message: 'There was a problem creating your availability.', errors: availability.errors }, status: :bad_request
end
end
def destroy
Availability.where(id: params[:ids]).destroy_all
end
def availability_params
params.require(:availability).permit(:day_of_the_week, :start_time, :end_time).tap do |availability_params|
availability_params.require([:day_of_the_week, :start_time, :end_time])
end
end
end
end
end
И запрос от внешнего интерфейса с использованием axios выглядит следующим образом:
axios.post('/api/v1/availabilities', { availability: payload })
Функция уничтожения также отправляет запрос такого типа:
axios.delete('/api/v1/availabilities', { params: { ids: payload } })
Пример вывода этого запроса при отправке выглядит следующим образом:
web_1 | Started POST "/api/v1/availabilities" for 172.18.0.1 at 2018-10-29 18:07:27 +0000
web_1 | Cannot render console from 172.18.0.1! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
web_1 | Processing by API::V1::AvailabilitiesController#create as JSON
web_1 | Parameters: {"availability"=>[{"start_time"=>"2018-10-30T13:00:00.000Z", "end_time"=>"2018-10-30T13:30:00.000Z", "day_of_the_week"=>"Tuesday", "tutor_id"=>1}, {"start_time"=>"2018-10-30T13:30:00.000Z", "end_time"=>"2018-10-30T14:00:00.000Z", "day_of_the_week"=>"Tuesday", "tutor_id"=>1}, {"start_time"=>"2018-10-30T14:00:00.000Z", "end_time"=>"2018-10-30T14:30:00.000Z", "day_of_the_week"=>"Tuesday", "tutor_id"=>1}, {"start_time"=>"2018-10-30T14:30:00.000Z", "end_time"=>"2018-10-30T15:00:00.000Z", "day_of_the_week"=>"Tuesday", "tutor_id"=>1}, {"start_time"=>"2018-10-30T15:00:00.000Z", "end_time"=>"2018-10-30T15:30:00.000Z", "day_of_the_week"=>"Tuesday", "tutor_id"=>1}]}
web_1 | User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY id LIMIT $2 [["id", 1], ["LIMIT", 1]]
web_1 | ↳ app/controllers/application_controller.rb:114
web_1 | Completed 500 Internal Server Error in 35ms (ActiveRecord: 1.0ms)
web_1 |
web_1 |
web_1 |
web_1 | NoMethodError (undefined method `permit' for #<Array:0x00007f1f26d889d8>):
Что именно я делаю не так? Любые предложения будут оценены спасибо.