我是一名新学员,需要一些帮助。我有两个模型(我通过脚手架生成)。类别和产品。
class Category
include Mongoid::Document
field :name, type: String
has_many :products
accepts_nested_attributes_for :products
end
class Product
include Mongoid::Document
include Mongoid::Paperclip
include Mongoid::Timestamps::Created
field :name, type: String
field :description, type: String
field :prize ,type: Integer
field :category_id
field :user_id
has_mongoid_attached_file :avatar,
:styles => {
:thumb => "150x150#",
:small => "150x150>",
:medium => "550x550#{}" }
belongs_to :user
belongs_to :category
end
我的类别控制器
#POST /categories.json
def create
@category = Category.new(category_params)
respond_to do |format|
if @category.save
format.html { redirect_to @category, notice: 'Category was successfully created.' }
format.json { render :show, status: :created, location: @category }
else
format.html { render :new }
format.json { render json: @category.errors, status: :unprocessable_entity }
end
end
def category_params
params.require(:category).permit(:name,product_attributes: [ :name, :description,:prize ,:category_id])
end
end
我的json格式
{
"name":"Mens Clothing",
"products_attributes": [
{
"name":"Denim jeans",
"Description": "test test test"
"prize":1000,
"user_id":1,
}
]
}
现在我的问题是当我尝试通过邮递员点击localhost:3000 /类别时,值不会被保存。另外,我不知道我的json格式是否正确,或者我的类别控制器代码是否正确。我是新手,并试图弄清楚数据是如何以json格式保存为rails.iam中的has_many关系获取缺失的参数错误
答案 0 :(得分:1)
您需要将基本资源名称作为JSON中的键:
{"category": {
"name":"Mens Clothing",
"products_attributes": [
{
"name":"Denim jeans",
"Description": "test test test", # <== Added a comma here
"prize":1000,
"user_id":1,
}
]
}}
params.require(:category)
表示您要查看传入参数并提取:category
键的值,如果找不到该键,则会引发ActionController::ParameterMissing
异常。
如果找到:category
密钥,则会将其值传递给#permit
,这会过滤掉未包含在已批准列表中的所有密钥。
由于您的参数中没有:category
,因此您的日志应反映ActionController::ParameterMissing
例外情况。