ruby-on-rails-6 - ActiveRecord 模型对象未保存
问题描述
我有一个使用 ActiveStorage 的产品模型has_one_attached
。我试图在提交表单后保存对象,但它没有保存,日志只说回滚,没有有用的错误消息。
形式:
<%= form_with(model: @produce, local: true) do |f| %>
<div class="form-group">
<label for="">Select Category</label>
<%= f.select(:category_id, [],{}, {:class => "browser-default custom-select"}) do %>
<% Category.all.each do |category| %>
<%= content_tag(:option, category.name, value: category.id ) %>
<% end %>
<% end %>
</div>
<div class="form-group">
<%= f.text_field :name, class: "form-control", placeholder: "Name"%>
</div>
<div class="form-group">
<%= f.label :prod_image, "Upload Product Image"%>
<%= f.file_field :prod_image, class: "form-control-file"%>
</div>
<div class="form-group">
<%= f.submit "Submit", class: "btn btn-primary" %>
</div>
<% end %>
控制器动作:
def create
@produce = Produce.new(prod_params)
bybug
if @produce.save
flash[:notice] = "Object successfully created"
redirect_to produces_path
else
flash[:alert] = "Something went wrong"
render 'new'
end
end
private
def prod_params
params.require(:produce).permit([:name, :category_id, :prod_image])
end
模型:
class Produce < ApplicationRecord
belongs_to :category
has_one_attached :prod_image
end
日志:
Started POST "/produces" for ::1 at 2020-05-14 01:55:47 -0500
Processing by ProducesController#create as HTML
Parameters: {"authenticity_token"=>"/IKY+MD350d6xSn5vkx8ZdIX/iGCp3sOokHQwkJM+tGX326sUjLKsx9YuWI+ZqDRsqMV0g4V7JbR4ilOTJE/dw==", "produce"=>{"category_id"=>"2", "name"=>"Cabbage", "prod_image"=>#<ActionDispatch::Http::UploadedFile:0x0000000006b1bc68 @tempfile=#<Tempfile:C:/Users/DEVELO~1/AppData/Local/Temp/RackMultipart20200514-18284-1yh47qh.jpg>, @original_filename="cabbage.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"produce[prod_image]\"; filename=\"cabbage.jpg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"Submit"}
(0.4ms) BEGIN
↳ app/controllers/produces_controller.rb:10:in `create'
Category Load (0.6ms) SELECT "categories".* FROM "categories" WHERE "categories"."id" = $1 LIMIT $2 [["id", 2], ["LIMIT", 1]]
↳ app/controllers/produces_controller.rb:10:in `create'
(0.4ms) ROLLBACK
↳ app/controllers/produces_controller.rb:10:in `create'
Rendering produces/new.html.erb within layouts/application
我哪里错了?
解决方案
推荐阅读
- protractor - 在量角器中设置全局变量
- javascript - ReactJS 更新状态数组并重新排序
- sql-server - 将 SQL Server 日期时间/日期格式更改为 dd/mm/yyyy
- node.js - Node.js MongoDB 插入需要太多时间
- ubuntu - 在从机上运行 kubernetes 部署时出现 ImagePullBackOff 错误,其中 docker docker 映像存在于主机中
- javascript - 单击第二个下拉列表时,黑框应保持可见
- php - 将分类术语添加到 WooCommerce 产品永久链接
- postgresql - PostgreSQL中具有相同名称(值)的列的总和
- capnproto - CapnProto 中的前向声明
- linux - GREP 或 Regex 搜索具有特定系列的唯一字符