Параметр группы Grape API не работает
Я хочу создать метод записи в виноградной лозе, где я хочу собрать все параметры один раз
в настоящее время я использую это как
params do
requires :id, type: Integer, desc: "post id"
requires :title, type: String, desc: "Title"
end
post do
post = Post.new(:id => params[:id],:title => params[:tile])
end
после поиска в Google я нашел что-то вроде
params do
group :post do
requires :id, type: Integer, desc: "post id"
requires :title, type: String, desc: "Title"
end
end
post do
#post = Post.new(params[:post])
#post.save
end
but it is also asking for post hash
Я также хочу загрузить файл (то есть параметры, чтобы добавить файл)
1 ответ
Ваш код будет работать, если вы объявите :post
группа как Hash
тип (тип по умолчаниюArray
):
params do
group :post, type: Hash do
requires :id, type: Integer, desc: "post id"
requires :title, type: String, desc: "Title"
end
end
Однако то, что это делает, немного отличается от того, что вы ожидаете: оно определяет post
параметр с id
а также title
в качестве подписчиков. Таким образом, данные, ожидаемые вашей конечной точкой, теперь выглядят так:
post[id]=100&post[title]=New+article
То, что вы пытаетесь сделать здесь, в любом случае не нужно. поскольку params
хеш с именами параметров конечной точки в качестве ключей, и атрибуты вашего Post
объект ожидает, названы идентично вашим параметрам конечной точки, вы можете просто сделать это:
params do
requires :id, type: Integer, desc: "post id"
requires :title, type: String, desc: "Title"
end
post do
post = Post.new(params)
end
Конечно, вы всегда должны санировать любые данные, которые вы получаете от пользователя, прежде чем действовать на него, поэтому этот вид ярлыков подходит только для личных приложений или приложений с качеством прототипа.