【发布时间】:2019-10-15 12:56:42
【问题描述】:
我使用 Ruby on Rails 5.2.3 和 Mongoid
我尝试添加多个类别。
category.rb
class Category
include Mongoid::Document
has_many :tickets
belongs_to :user
end
ticket.rb
class Ticket
include Mongoid::Document
belongs_to :user
belongs_to :category, touch: true
end
tickets/_form.html.erb
<%= form_for(@ticket, html: { role: 'form' }) do |f| %>
<%= f.collection_select :category_id, Category.all, :id, :title, options = { include_hidden: false }, html_options = { multiple: true } %>
<%= f.submit 'Save' %>
<% end %>
当我尝试保存时出现“类别不能为空白”的错误
日志
TicketsController#create 作为 HTML 参数处理: {"utf8"=>"✓", "authenticity_token"=>"rZyRkTPqTdM//ymnKGsm4Ctm5Co7YgAnSQg6oOaOVv4qEua1QB6cxclId2H4lm1rHG49H/2KomLWab1FaKnf1g==", "ticket"=>{"name"=>"test", "description"=>"test", "category_id"=>["5d0939d51996da62c1bd4699", "5d0939de1996da62c1bd469a"]}, "commit"=>"保存"} MONGODB | 本地主机:27017 | remote_development.find |开始 | {"查找"=>"用户", "过滤器"=>{"_id"=>BSON::ObjectId('5d77b34d1996da1a261c111d')}, "排序"=>{"_id"=>1}, "限制"=>1, "singleBatch"=>true, "lsid"=>{"id"=>}} MONGODB |本地主机:27017 | remote_development.find |成功 | 0.002s 本地主机:27017 | remote_development.find |开始 | {"查找"=>"类别", "过滤器"=>{"_id"=>[BSON::ObjectId('5d0939d51996da62c1bd4699'), BSON::ObjectId('5d0939de1996da62c1bd469a')]}, "limit"=>1, "singleBatch"=>true, "lsid"=>{"id"=>}} MONGODB |本地主机:27017 | remote_development.find |成功 | 0.003s 渲染 布局/应用程序中的tickets/new.html.erb 渲染 shared/_error_messages.html.erb (0.9ms) MONGODB |本地主机:27017 | remote_development.find |开始 | {"查找"=>"类别", "过滤器"=>{}, "lsid"=>{"id"=>}} MONGODB |本地主机:27017 | remote_development.find |成功 | 0.001s 渲染 门票/_form.html.erb (9.7ms) 内渲染的门票/new.html.erb 布局/应用程序 (12.9ms) 渲染共享/_nav.html.erb (1.9ms) 在 120 毫秒内完成 200 次 OK(查看次数:104.9 毫秒 | MongoDB:0.0 毫秒)
【问题讨论】:
-
请检查是否在strong_params中添加了相同
-
params.require(:ticket).permit(category_id: []) -
乍一看,这看起来不错。所以,它必须工作。如果不是,会发生什么?,一定有问题,对吧?,并且您共享的代码不足以猜测发生了什么。如果您添加您的请求日志,控制器中执行更新的部分代码(或者如果您使用表单对象,然后共享该部分),还可以分享您在模型中的关联方式,等等.
-
@fanta 是的,出了点问题。我添加了代码
标签: ruby-on-rails mongoid