这个问题发生在我创建一个销售的时候,有人知道为什么吗?我相信sales_controller中的参数是空的,我总是从有或没有scaffold的新视图创建东西,但是这一次我打算从其他视图创建,所以我不知道如何解决这个错误。请帮助我的兄弟们。
错误:
操作控制器::SalesController #create中缺少参数
缺少参数或值为空:Sale
根目录:C:/用户/osmarvirux/下载/商店极客
应用程序跟踪|框架跟踪|完整跟踪
应用程序/控制器/销售控制器. rb:16:在"销售参数"中
应用程序/控制器/sales_controller. rb:3:在"创建"请求中
参数:
{" utf8 "=〉"","真实性令牌"=〉" D6n验证+A8W + ykkQuk7wnK0vqbfuIxIGJDT0mQ0FODTyBAiy8F39491tfYJi9yJ5tzwFNxa6SfqfMuzZt3YVA =="}
销售控制器. rb
class SalesController < ApplicationController
def create
sale = Sale.create(sale_params)
respond_to do |format|
if sale.save
format.html { redirect_to root_path, notice: 'Datos guardados exitosamente.' }
else
format.html { redirect_to root_path, alert: 'Hubo un error, comunicate con nosotros a cualquier numero telefonico' }
end
end
end
private
def sale_params
params.require(:sale).permit(:country, :state, :city, :street, :colony, :number, :postal_code)
end
end
支付成功. haml
.col-md-10.center-block.no-float.top-space.bottom
%articule.card.large-padding
%section.big-top-space
%h2 Resumen de tu pedido
.table-responsive
%table.table.table-striped.table-hover.medium#table_shopping_cart
%thead
%td.success Product
%td.success Costo
%tbody
-@shopping_cart.in_shopping_carts.each do |i_sh|
-product = i_sh.product
%tr{id: "#{product.id}"}
%td= product.name
%td= "#{product.pricing / 100} USD"
.col-lg-12
%a.btn.btn-link.bold.medium.capitalize{"role" => 'button', "data-toggle" => 'collapse', "href": "#payment_succeed", "aria-expanded" => 'false', "aria-controls" => "payment_succeed"}
Agregar informacion
.collapse#payment_succeed
.well.inline-block.no-margin.no-padding
.form-group
=form_tag "/ok", method: :post, class: "no-margin no-padding" do
=text_field_tag :key_sale,nil, class:"form-control floating-label", placeholder: "Key"
=text_field_tag :country,nil, class:"form-control floating-label", placeholder: "Pais"
=text_field_tag :state,nil, class:"form-control floating-label", placeholder: "Estado"
=text_field_tag :city,nil, class:"form-control floating-label", placeholder: "Ciudad"
=text_field_tag :street,nil, class:"form-control floating-label", placeholder: "Calle"
=text_field_tag :colony,nil, class:"form-control floating-label", placeholder: "Colonia"
=number_field_tag :number,nil, class:"form-control floating-label", placeholder: "Numero"
=number_field_tag :postal_code,nil, class:"form-control floating-label", placeholder: "Numero postal"
=content_tag :button, type: :submit, class:"btn btn-primary bold" do
Aceptar
途径
post "/ok", to: "sales#create"
2条答案
按热度按时间qlzsbp2j1#
您的强参数将查找以下格式,并将
sale
作为根键:根据您的日志,没有任何参数通过
POST
。请尝试将值放入其中一个输入,然后再次提交POST
,以查看是否有参数通过。如果没有,请尝试使用Rails guides在表单设置中逐步解决此问题。此外,您声明希望
sale
作为根键,也可以通过将sale_params
方法更改为以下方法来放松此限制:这将允许您的params删除根密钥:
p3rjfoxz2#
在Ruby on Rails中,我们可以传递strong参数和而不传递strong参数。
但我建议始终使用强参数,因为“假设不安全,直到证明不是这样”
当应用程序将用户输入的数据一次分配给多个对象、变量或数据库字段时。更新对象的属性可使攻击者修改或覆盖现有数据。
强参数:
{“utf8”=〉“",“销售”=〉{“国家”=〉“美国”} }
无存储参数:
{“utf8”=〉“",“国家”=〉“美国”}