2015-11-12 36 views
0

我不知道如何放置它。有人可能已经问过这个问题了!Rails4:如何附加未列入白名单的域(强参数)

我有一个订单表,它有product_details列。但是,当用户提交订单时,它只会获取用户的姓名和地址。我想在保存数据时手动添加产品详细信息。

我的订单控制器

def create 
     @neworder = Order.new(order_params) 
     if @neworder.save 
     redirect_to root_url, notice: "" 
     else 
     render "new" 
     end 
    end 

    private 
    def order_params 
     params.require(:order).permit(:name,:address) 
    end 

如果我白名单product_details场那么我想这将是开放的“质量分配”与否?
params.require(:order).permit(:name,:address, :product_detail)

回答

0

如果你的“product_details”,正在通过表单提交,那么你需要将其添加到允许白名单,像这样:

def order_params 
    params.require(:order).permit(:name,:address, :product_details) 
end 

但是,我认为“手动添加”您意味着在控制器中设置该属性。如果是这种情况,那么你不应该将它添加到许可证列表中,因为它将允许对该字段进行批量分配 - 你可能不希望这样做。

你需要的是改变你的创建操作,如下所示:

def create 
    @neworder = Order.new(order_params) 
    @neworder.product_details = "test" 
    if @neworder.save 
    redirect_to root_url, notice: "" 
    else 
    render "new" 
    end 
end 
+0

我的意思是,用户不提交数据(产品详细信息)。我从数据库中手动获取该信息,并在他们提交姓名和地址后添加它。 – Khoga

+0

更新了我的文章。 – Khoga

+0

我更新了我的答案。是否有意义? – rlarcombe

相关问题