ruby-on-rails 缺少参数或值为空:销售

nlejzf6q  于 2023-01-22  发布在  Ruby
关注(0)|答案(2)|浏览(122)

这个问题发生在我创建一个销售的时候,有人知道为什么吗?我相信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"
qlzsbp2j

qlzsbp2j1#

您的强参数将查找以下格式,并将sale作为根键:

{ "utf8"=>"✓", "sale" => {"country"=> "USA"} }

根据您的日志,没有任何参数通过POST。请尝试将值放入其中一个输入,然后再次提交POST,以查看是否有参数通过。如果没有,请尝试使用Rails guides在表单设置中逐步解决此问题。
此外,您声明希望sale作为根键,也可以通过将sale_params方法更改为以下方法来放松此限制:

def sale_params
  params.permit(:country, :state, :city, :street, :colony, :number, :postal_code)
end

这将允许您的params删除根密钥:

{ "utf8"=>"✓", "country"=> "USA" }
p3rjfoxz

p3rjfoxz2#

在Ruby on Rails中,我们可以传递strong参数和而不传递strong参数。
但我建议始终使用强参数,因为“假设不安全,直到证明不是这样”
当应用程序将用户输入的数据一次分配给多个对象、变量或数据库字段时。更新对象的属性可使攻击者修改或覆盖现有数据。
强参数:

def user_params
      params.require(:sales).permit(:country)
 end

{“utf8”=〉“",“销售”=〉{“国家”=〉“美国”} }
无存储参数:

def user_params
  params.permit(:country)
end

{“utf8”=〉“",“国家”=〉“美国”}

相关问题