问题描述
全部,我正在按照教程创建一个 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 (将#修改为@)