如何解决参数需要抛出参数丢失或值为空:文章
全部,我正在按照教程创建一个 rails api。我在使用 rails 6 和 fast_jsonapi gem 时遇到了问题。
我的控制器中有以下内容
module Api
module V1
class ArticlesController < ApplicationController
protect_from_forgery with: :null_session
def index
articles = Article.all
render json: ArticleSerializer.new(articles,options).serialized_json
end
def show
article = Article.find_by(slug: params[:slug])
render json: ArticleSerializer.new(article,options).serialized_json
end
def create
article = Article.new(article_params)
if article.save
render json: ArticleSerializer.new(article).serialized_json
else
render json: {error: article.error.messages},status: 422
end
end
def update
article = Article.find_by(slug: params[:slug])
if article.update(article_params)
render json: ArticleSerializer.new(articles,options).serialized_json
else
render json: {error: article.error.messages},status: 422
end
end
def destroy
article = Article.find_by(slug: params[:slug])
if article.destroy(article_params)
head :no_content
else
render json: {error: article.error.messages},status: 422
end
end
private
def article_params
params.require(:articles).permit(:name,:image_url)
# params.permit(:name,:image_url)
end
#compond document,pass in optional hash with additionalresources
def options
@options ||= {include:%i[reviews]}
end
end
结束 结束
但是,当我尝试使用以下强参数创建文章时,我可以获得请求
params.require(:articles).permit(:name,:image_url)
params.permit(:name,:image_url)
记录已创建但为空
{
"data": {
"id": "21","type": "article","attributes": {
"name": null,"image_url": null,"slug": "article"
},"relationships": {
"reviews": {
"data": []
}
}
}
}
对此有任何帮助吗?
这是我的审核控制器:
module Api
module V1
class ReviewsController < ApplicationController
protect_from_forgery with: :null_session
def create
review = Review.new(review_params)
if article.save
render json: ReviewSerializer.new(review).serialized_json
else
render json: {error: review.error.messages},status: 422
end
end
def destroy
review = Review.find_by(params[:id])
if review.destroy
head :no_content
else
render json: {error: review.error.messages},status: 422
end
end
private
def review_params
# params.require(:article).permit(:title,:description,:score,:article_id )
params.permit(:title,:article_id )
end
end
end
结束
我的路线
Rails.application.routes.draw do
root 'pages#index'
namespace :api do
namespace :v1 do
resources :articles,param: :slug
resources :reviews,only: [:create,:destroy]
end
end
get '*path',to: 'pages#index',via: :all
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。