Ruby on rails 4 嵌套资源的字段\u不工作

Ruby on rails 4 嵌套资源的字段\u不工作,ruby-on-rails-4,Ruby On Rails 4,我有以下协会: class Campaign < ActiveRecord::Base has_many :events end class Event < ActiveRecord::Base belongs_to :campaign belongs_to :venue accepts_nested_attributes_for :venue end class Venue < ActiveRecord::Base has_many :events e

我有以下协会:

class Campaign < ActiveRecord::Base
  has_many :events
end

class Event < ActiveRecord::Base
  belongs_to :campaign
  belongs_to :venue
  accepts_nested_attributes_for :venue
end

class Venue < ActiveRecord::Base
  has_many :events
end
它还会生成错误的字段名

这让我觉得我有我的模型协会顶起,但在审查文件。似乎并非如此。以下是我的模式供参考:

  create_table "campaigns", force: true do |t|
    t.integer  "user_id"
    t.string   "title"
    t.text     "description"
    t.integer  "image_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "events", force: true do |t|
    t.integer  "campaign_id"
    t.datetime "start_date"
    t.datetime "end_date"
    t.integer  "venue_id"
    t.integer  "image_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "title"
    t.text     "description"
  end

  create_table "venues", force: true do |t|
    t.float    "latitude"
    t.float    "longitude"
    t.string   "address1"
    t.string   "address2"
    t.string   "city"
    t.string   "zip"
    t.string   "state"
    t.string   "country"
    t.string   "name"
    t.string   "gid"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

参见类似的SO帖子

1.

2.

正如在其中一篇文章中提到的,实现它的一种方法是将的
accepts\u nested\u attributes\u更改为
has\u many

class Campaign < ActiveRecord::Base
  has_many :events
  accepts_nested_attributes_for :events
end

class Event < ActiveRecord::Base
  belongs_to :campaign
  belongs_to :venue

end

class Venue < ActiveRecord::Base
  has_many :events
  accepts_nested_attributes_for :events
end
class活动
如果不是,您可能希望使用
@event为
事件
构建
场馆
。在调用
字段之前,在控制器中构建场馆


希望有帮助

至少在铁路上,它确实对你有用。但是你的第二个链接的第二个答案是正确的。我需要在fieldsê之前致电@event.buildêvinceê知道如何取球。毕竟,我的关联是正确建立的。如果你想重新安排你的答案,我会把它标记为正确答案。@Vigrond我想现在看起来还可以。不管怎样,很高兴你找到了答案。
  create_table "campaigns", force: true do |t|
    t.integer  "user_id"
    t.string   "title"
    t.text     "description"
    t.integer  "image_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "events", force: true do |t|
    t.integer  "campaign_id"
    t.datetime "start_date"
    t.datetime "end_date"
    t.integer  "venue_id"
    t.integer  "image_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "title"
    t.text     "description"
  end

  create_table "venues", force: true do |t|
    t.float    "latitude"
    t.float    "longitude"
    t.string   "address1"
    t.string   "address2"
    t.string   "city"
    t.string   "zip"
    t.string   "state"
    t.string   "country"
    t.string   "name"
    t.string   "gid"
    t.datetime "created_at"
    t.datetime "updated_at"
  end
class Campaign < ActiveRecord::Base
  has_many :events
  accepts_nested_attributes_for :events
end

class Event < ActiveRecord::Base
  belongs_to :campaign
  belongs_to :venue

end

class Venue < ActiveRecord::Base
  has_many :events
  accepts_nested_attributes_for :events
end