Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Rails中添加多个类别?_Ruby On Rails_Mongoid - Fatal编程技术网

Ruby on rails 如何在Rails中添加多个类别?

Ruby 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

我使用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
票证/_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中添加了相同的属性ams
params.require(:ticket).permit(category_id:[])
乍一看,这看起来不错。因此,它必须工作。如果它不工作,会发生什么?一定是出了问题,对吧?并且您共享的代码不足以猜测发生了什么。如果您添加请求日志(执行更新的控制器中的代码的一部分),那就好了(或者如果您使用表单对象,那么就共享该部分),还可以共享您在模型中的关联方式,等等@fanta是的,有问题。我添加了代码