预期类别(#69942071276340),得到字符串(#8940340)
Category(#69942071276340) expected, got String(#8940340)
我正在尝试为我的 rails 应用程序提交表单,但我在标题中收到错误消息,我不确定如何修复它。类别是我的外键。
= form_for @menu_price do |f|
- if @menu_price.errors.any?
#error_explanation
h2 = "#{pluralize(@menu_price.errors.count, "error")} prohibited this menu_price from being saved:"
ul
- @menu_price.errors.full_messages.each do |message|
li = message
.form-group
= f.label :category
= f.select :category, options_for_select(@categories.map{ |c| [c.name] })
.form-group
= f.label :price
= f.number_field :price
.form-group
= f.label :description
= f.text_field :description
.form-group
= f.label :serves
= f.text_field :serves
= f.submit
= link_to 'Back', menu_prices_path, class:'button'
我的模型是这样的
class Category < ActiveRecord::Base
has_many :menu_prices
validates :category, :presence => true
end
***********已更新***********
class CreateMenuPrices < ActiveRecord::Migration
def change
create_table :menu_prices do |t|
t.text :description, :null => false
t.decimal :price , :default => nil , :null => true
t.string :serves, :default => nil , :null => true
t.integer :small , :default => nil , :null => true
t.integer :regular, :default => nil , :null => true
t.integer :large, :default => nil , :null => true
t.integer :party, :default => nil, :null => true
t.timestamps null: false
end
add_reference :menu_prices, :categories
end
end
我知道它需要一个外键,但我不确定如何在表单中提交外键。任何帮助将不胜感激。
******更新******
我的schema.rb低于
create_table "categories", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "menu_prices", force: :cascade do |t|
t.text "description", null: false
t.decimal "price"
t.string "serves"
t.integer "small"
t.integer "regular"
t.integer "large"
t.integer "party"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "categories_id"
end
end
因为您实际上只从视图中传递 category_id(而不是整个 Category
对象),而不是
f.label :category
和
f.select :category
你应该有:
f.label :category_id
和
f.select :category_id
您还应确保 category_id
列存在于 menu_prices
table 中。
我正在尝试为我的 rails 应用程序提交表单,但我在标题中收到错误消息,我不确定如何修复它。类别是我的外键。
= form_for @menu_price do |f|
- if @menu_price.errors.any?
#error_explanation
h2 = "#{pluralize(@menu_price.errors.count, "error")} prohibited this menu_price from being saved:"
ul
- @menu_price.errors.full_messages.each do |message|
li = message
.form-group
= f.label :category
= f.select :category, options_for_select(@categories.map{ |c| [c.name] })
.form-group
= f.label :price
= f.number_field :price
.form-group
= f.label :description
= f.text_field :description
.form-group
= f.label :serves
= f.text_field :serves
= f.submit
= link_to 'Back', menu_prices_path, class:'button'
我的模型是这样的
class Category < ActiveRecord::Base
has_many :menu_prices
validates :category, :presence => true
end
***********已更新***********
class CreateMenuPrices < ActiveRecord::Migration
def change
create_table :menu_prices do |t|
t.text :description, :null => false
t.decimal :price , :default => nil , :null => true
t.string :serves, :default => nil , :null => true
t.integer :small , :default => nil , :null => true
t.integer :regular, :default => nil , :null => true
t.integer :large, :default => nil , :null => true
t.integer :party, :default => nil, :null => true
t.timestamps null: false
end
add_reference :menu_prices, :categories
end
end
我知道它需要一个外键,但我不确定如何在表单中提交外键。任何帮助将不胜感激。 ******更新****** 我的schema.rb低于
create_table "categories", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "menu_prices", force: :cascade do |t|
t.text "description", null: false
t.decimal "price"
t.string "serves"
t.integer "small"
t.integer "regular"
t.integer "large"
t.integer "party"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "categories_id"
end
end
因为您实际上只从视图中传递 category_id(而不是整个 Category
对象),而不是
f.label :category
和
f.select :category
你应该有:
f.label :category_id
和
f.select :category_id
您还应确保 category_id
列存在于 menu_prices
table 中。