accepts_nested_attributes - ActiveRecord :: UnknownAttributeError

时间:2018-05-05 14:30:58

标签: ruby-on-rails

我有一个非常简单的模型,每个事件都有很多外汇。我正在尝试创建一个嵌套的表单来创建具有一堆外汇的新事件。

def start_main_loop(self):
    while 1:
        ret, frame = self.current_state.read()
        if cv2.waitKey(1) & 0xFF == ord('q'):
            self.close()
            break
        if ret:
            cv2.imshow('Game', frame)

架构是这样的:

class Event < ActiveRecord::Base
  has_many :forexes
  accepts_nested_attributes_for :forexes

end


class Forex < ActiveRecord::Base
  belongs_to :event
end

然后我尝试使用rails控制台中的以下代码创建新对象。它失败了。

ActiveRecord::Schema.define(version: 20180505093823) do

  create_table "events", force: :cascade do |t|
    t.string   "name"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string   "base"
  end

  create_table "forexes", force: :cascade do |t|
    t.string   "code"
    t.float    "rate"
    t.integer  "event_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  add_index "forexes", ["event_id"], name: "index_forexes_on_event_id"

end

这让我误解了这个错误。

Event.new( name: "11", base: "HKD", forexes_attributes: [ {code: "RMB", rate:1}, {code: "CNY",rate:2}])

我知道这是一个非常基本的问题。在不同的地方进行研究后,我尝试了许多不同的方法。我无法调试它。感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

在您的事件控制器中,您需要在event_params方法中包含forexes_attributes以及默认值

def event_params
  params.require(:event).permit(forexes_attributes: Forexes_attribute_names.map(&:to_sym).push(:_destroy))
end