我将parent_id
附加到表单页面的URL(当它从我的应用程序中的现有' block
'页面链接时)
然后,在创建新的block
时提交该表单的输入(这将创建一个'child block'
,URL中包含parent_id
)
但当我试着用这个来保存时:
def create
@block = Block.new(block_params)
if @block.save
redirect_to @block
else
render :new, status: :unprocessable_entity
end
end
其中block_params
为:
private
def block_params
params.require(:block).permit(:title, :body, :parent_id)
end
它只保存:title
和:body
参数,而忽略URL中的:parent_id
。
如果我尝试手动合并它们,例如
def create
@block = Block.new(block_params, parent_id: [parent_id)
我得到'params should be between 0...1'
的错误(这是有意义的)
我错过了什么,为什么这是不保存URL参数以及?
编辑
此处为模型详细信息
class Block < ApplicationRecord
belongs_to :parent, class_name: 'Block', foreign_key: :parent_id, optional: true
has_many :children, class_name: 'Block', foreign_key: :parent_id
validates :title, presence: true
validates :body, presence: true, length: { minimum: 10 }
end
1条答案
按热度按时间tzdcorbm1#
可以使用parameter merge method组合参数
即
@block = Block.new(block_params.merge(parent_id: params[:parent_id))