ruby-on-rails - Mongoid错误 "undefined method `删除':format:Symbol"

标签 ruby-on-rails mongodb nested mongoid

我有 2 个嵌套模型:

class Interstate
  include Mongoid::Document
  field :name, :type => String
  field :url, :type => String
  field :time_zone, :type => String
  embeds_many :roadmaps
end

class Roadmap
  include Mongoid::Document
  field :title, :type => String
  field :privacy, :type => Integer
  field :interstate_id, :type => Integer
  embedded_in :interstate, :inverse_of => :roadmaps
end

我不确定 has_many|belongs_toembeds_many|embedded_in 之间的区别,但根据文档,最后一个对我来说更好,无论如何两者都不起作用。我还有嵌套资源:

 resources :interstates do
   resources :roadmaps
 end

当我尝试在州际公路上创建路线图时出现错误。

路线图 Controller 是标准脚手架,具有用于州际定义的 before_filter 方法:

 private
 def get_interstate
   @interstate = Interstate.find(params[:interstate_id])
 end

如果 embeds_many :roadmapsembedded_in :interstate 发生其他错误:

NoMethodError in Roadmaps#new

Showing /home/alder/RubymineProjects/interstate/app/views/roadmaps/_form.html.haml where line #1 raised:

undefined method `delete' for :format:Symbol

Extracted source (around line #1):

1: = simple_form_for(@interstate, @roadmap) do |f|
2:   = f.error_notification
3: 
4:   .inputs

Trace of template inclusion: app/views/roadmaps/new.html.haml

Rails.root: /home/alder/RubymineProjects/interstate
Application Trace | Framework Trace | Full Trace

app/views/roadmaps/_form.html.haml:1:in `_app_views_roadmaps__form_html_haml___160176716082020505_38930380'
app/views/roadmaps/new.html.haml:3:in `_app_views_roadmaps_new_html_haml__4577296702858298215_34853620'
app/controllers/roadmaps_controller.rb:31:in `new'

控制台:

undefined method `delete' for :format:Symbol (ActionView::Template::Error)
/home/alder/.rvm/gems/ruby-1.9.2-p290@global/gems/mongoid-2.3.2/lib/mongoid/persistence/operations.rb:80:in `notifying_parent?'                                                                                 
/home/alder/.rvm/gems/ruby-1.9.2-p290@global/gems/mongoid-2.3.2/lib/mongoid/persistence/operations/embedded/remove.rb:30:in `block in persist'                                                                  
/home/alder/.rvm/gems/ruby-1.9.2-p290@global/gems/mongoid-2.3.2/lib/mongoid/persistence/deletion.rb:23:in `prepare'                                                                                             
/home/alder/.rvm/gems/ruby-1.9.2-p290@global/gems/mongoid-2.3.2/lib/mongoid/persistence/operations/embedded/remove.rb:29:in `persist'                                                                           
/home/alder/.rvm/gems/ruby-1.9.2-p290@global/gems/mongoid-2.3.2/lib/mongoid/persistence.rb:56:in `remove'                                                                                                       
/home/alder/.rvm/gems/ruby-1.9.2-p290@global/gems/actionpack-3.1.1/lib/action_view/helpers/form_helper.rb:392:in `apply_form_for_options!'                                                                      
/home/alder/.rvm/gems/ruby-1.9.2-p290@global/gems/actionpack-3.1.1/lib/action_view/helpers/form_helper.rb:365:in `form_for'

Full stack

所以,也许我应该添加一些选项来取消通知,但更有趣的是为什么格式是符号,我想它应该是一些模型对象。也许@interstate不是模型。

此代码可以正确使用 sqlite 数据库。

最佳答案

问题是在圆括号中而不是方括号中。

simple_form_for [@interstate, @roadmap]

关于ruby-on-rails - Mongoid错误 "undefined method `删除':format:Symbol",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943263/

相关文章:

javascript - d3 v5 缩放轴时使用嵌套值

ruby-on-rails - 如何在没有 ActiveRecord 的情况下在 Redis 和 Ohm 上使用表单?

c# - 如何通过 Unity (C#) 使用 Ruby on Rails 用户 Controller 来注册新用户?

ruby-on-rails - Rails 设计 - Facebook + Twitter +

node.js - mongoDB 中数据库更新后查询未给出更新结果

node.js - MongoDB 对象未通过删除。 Mongoose

javascript - 如何在 FuelUX 树 Bootstrap 插件中显示嵌套数据项

ruby-on-rails - 使用 Chartkick 添加注释

mongodb - 将写关注与 insert_one 结合使用

javascript - 通过路径访问嵌套属性