Ruby on rails 如何在Rails中添加多个类别?
我使用RubyonRails 5.2.3和Mongoid 我尝试添加多个类别 category.rbRuby on rails 如何在Rails中添加多个类别?,ruby-on-rails,mongoid,Ruby On Rails,Mongoid,我使用RubyonRails 5.2.3和Mongoid 我尝试添加多个类别 category.rb class Category include Mongoid::Document has_many :tickets belongs_to :user end 票.rb class Ticket include Mongoid::Document belongs_to :user belongs_to :category, touch: true end 票证/_f
class Category
include Mongoid::Document
has_many :tickets
belongs_to :user
end
票.rb
class Ticket
include Mongoid::Document
belongs_to :user
belongs_to :category, touch: true
end
票证/_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 %>
当我尝试保存时,出现一个错误“类别不能为空”
日志
由TicketController处理#创建为HTML参数:
{“utf8”=>“✓",
“真实性令牌”=>“rZyRkTPqTdM//ymnKGsm4Ctm5Co7YgAnSQg6oOaOVv4qEua1QB6cxclId2H4lm1rHG49H/2KomLWab1FaKnf1g=”,
“票证”=>{“名称”=>“测试”,“说明”=>“测试”,
“类别id”=>[“5d0939d51996da62c1bd4699”,
“5d0939de1996da62c1bd469a”]},“提交”=>“保存”}MONGODB|
本地主机:27017 |远程| u development.find |已启动|
{“查找”=>“用户”,
“过滤器”=>{“\u id”=>BSON::ObjectId('5D77B34D1996DA1A261C11D'),
“sort”=>{u id”=>1},“limit”=>1,“singleBatch”=>true,
“lsid”=>{“id”=>}}MONGODB|本地主机:27017|
远程| u development.find |成功| 0.002s MONGODB|
本地主机:27017 |远程| u development.find |已启动|
{“查找”=>“类别”,
“过滤器”=>{“_id”=>[BSON::ObjectId('5d0939d51996da62c1bd4699'),
BSON::ObjectId('5d0939de1996da62c1bd469a')],“限制”=>1,
“singleBatch”=>true,“lsid”=>{“id”=>}}MONGODB | localhost:27017|
远程| u development.find |成功| 0.003s渲染
布局/应用程序中的tickets/new.html.erb
共享/_error_messages.html.erb(0.9ms)MONGODB |本地主机:27017|
远程_development.find |已启动|{“find”=>“categories”,
“过滤器”=>{},“lsid”=>{“id”=>}}MONGODB |本地主机:27017|
远程| u development.find |成功| 0.001s渲染
tickets/_form.html.erb(9.7ms)渲染的tickets/new.html.erb
布局/应用程序(12.9ms)呈现为共享/_nav.html.erb(1.9ms)
在120毫秒内完成200 OK(视图:104.9毫秒| MongoDB:0.0毫秒)
您正在将两个id传递给与名称
类别\u id
关联的归属\u-to
。您实际上需要一个拥有\u-many
或拥有\u和\u-many属于\u-many
关系,因此它是一个多重关系,属性将是类别\u-id
的复数形式。请检查您是否在strong par中添加了相同的属性amsparams.require(:ticket).permit(category_id:[])
乍一看,这看起来不错。因此,它必须工作。如果它不工作,会发生什么?一定是出了问题,对吧?并且您共享的代码不足以猜测发生了什么。如果您添加请求日志(执行更新的控制器中的代码的一部分),那就好了(或者如果您使用表单对象,那么就共享该部分),还可以共享您在模型中的关联方式,等等@fanta是的,有问题。我添加了代码