Как избежать дублирования кода?Как написать одинаковые требования для нескольких маршрутов, например. ПОСТ, ПУТЬ? (Ruby Grape)
resource 'api/publication/:publicationName' do
params do
requires :type, type: String, regexp: /^(static|dynamic)$/i
requires :name, type: String, regexp: /^[a-z0-9_\s]+$/i
requires :liveStartDate, type: String, regexp: dateRegexp
optional :liveEndDate, type: String, regexp: dateRegexp
requires :query, type: String
end
post '/dynamic' do
authenticate!
save_or_update(params)
end
params do
requires :type, type: String, regexp: /^(static|dynamic)$/i
requires :name, type: String, regexp: /^[a-z0-9_\s]+$/i
requires :liveStartDate, type: String, regexp: dateRegexp
optional :liveEndDate, type: String, regexp: dateRegexp
requires :query, type: String
end
put '/dynamic/:id' do
authenticate!
save_or_update(params)
end
end
Я получаю сообщение об ошибке '' 'ArgumentError - неправильное количество аргументов (1 для 0):' '' Я использую виноград 0.10.1. Какую версию вы используете? Вы должны сделать это так. '' 'класса API <Виноградный :: API хелперы сделать Params: разбивка этого дополнительно: страница, Тип: Integer опционально: per_page, тип: Integer конец конец убывание "Получить коллекцию" PARAMS сделать использование: # разбиения на страницы псевдонимами: включает в себя, use_scope конец получают сделать Collection.page. (Params [: страницы]) в (PARAMS [: per_page]) конец end''' –
@ChunYang, вы правы. Я скорректировал образец кода так, чтобы именованные параметры были вложены в блок помощников. Больше информации здесь: https://github.com/ruby-grape/grape#helpers –