【问题标题】:Unknown attribute 'utf8' for Permit许可证的未知属性“utf8”
【发布时间】:2017-11-27 08:21:48
【问题描述】:

我在 ActiveAdmin 控制器内部工作。我正在尝试传递我的 allowed_pa​​rams 以及当前日期和登录的当前用户。但是,每当我提交时,我都会收到 Unknown attribute 'utf8' for Permit 错误。

admin/permit.rb

form do |f|
    f.inputs do
        f.input :vehicle, :collection => Vehicle.all.map{ |vehicle| [vehicle.license_number]}
        f.input :permit_id
        f.input :date_issued, as: :date_picker
        f.input :issued_by
    end
    f.actions
end

controller do
    def new
        @permit = Permit.new
        @vehicle = @permit.build_vehicle 
    end 

    def create
         #@permit = Permit.new
         vehicle = Vehicle.find_by(permitted_params[:vehicle])
         @permit = current_user.permit.build(permitted_params.merge(date_entered: Date.today, 
            entered_by: current_admin_user.email))
         @permit.update(vehicle: vehicle)
         super
    end

    def permittted_params
        params.require(:permit).permit(:permit_id, :date_issued, :issued_by, :date_entered, :entered_by, vehicle_attributes: [:license_number])
    end

    def set_permit
        @permit = Permit.find(params[:id])
    end
end

有人知道我为什么会收到这个错误吗?我在正常的 Rails 应用程序中没有收到此错误,它运行的代码几乎相同。谢谢

编辑

这是应用程序跟踪

app/admin/permit.rb:61:in `create'
Request

Parameters:

{"utf8"=>"✓","authenticity_token"=>"zw3Px+gEOvp2UDufgiBNyG0yShTHQYBIsOK+WWj7wiYkMNkR3aLku5TMBxK5b0mQoZvKr+w6YgYZVPGxURtH0A==",
 "permit"=>{"permit_id"=>"ST-5555", "date_issued"=>"2018-11-24", 
"issued_by"=>"Nate"},
 "commit"=>"Create Permit"}

【问题讨论】:

标签: ruby-on-rails utf-8 activeadmin


【解决方案1】:

我会避免使用 Permit 作为型号名称,请尝试使用 VehiclePermit。

ActiveAdmin 有自己的 permit_params 宏来处理强参数,请参阅 https://activeadmin.info/2-resource-customization.html。有一个名为 :permitted_pa​​rams 的命名空间设置,默认情况下包含 :utf8,所以我不会将其用作控制器方法名称。

【讨论】:

  • 我更改了所有型号名称,因此它实际上是车辆许可证。但是,您知道我的 UTF8 问题的解决方法吗?因为我仍然无法让它工作。
  • 扩展了我的回复。
  • 就是这样。非常感谢您的帮助!我只是没有在我的permitted_params 中传递最后一个[:vehicle_permit]
【解决方案2】:

我在使用邮递员时遇到了这个错误。 设置标题:enctypemultipart/form-data; charset=utf-8

【讨论】:

  • 我在哪里做,我只是把它放在 AA 页面的顶部吗?
  • 如何向控制器发送请求?
  • 所以我要将该语句添加到 AA 控制器的 create 方法中?
  • 如果您从表单发送请求,则需要使用此标头发送请求:<form enctype="multipart/form-data" accept-charset="utf-8">
猜你喜欢
  • 2016-11-24
  • 1970-01-01
  • 2020-11-24
  • 2019-10-19
  • 2020-03-25
  • 2019-08-04
  • 2018-09-20
  • 2020-11-17
  • 2019-08-25
相关资源
最近更新 更多