为什么父对象被打印而不是值?

时间:2018-01-25 08:12:42

标签: ruby-on-rails

我正在尝试显示对象值的集合,但却改为#<PromoCode:0x007fa8123b2fd8>

这是我的 controller.rb

before_action :set_sources

private

def set_sources
  @pizzas ||= Pizza.all.order(:name)
  @promo_codes = PromoCode.all.order(:code)
end

这是我的 view.html.haml

= f.input_field :pizza_id, as: :select, collection: @pizzas, class: 'form-control'
= f.input_field :promo_code_id, as: :select, collection: @promo_codes, class: 'form-control'

以下是两种模型的 schema.rb

create_table "promo_codes", id: :serial, force: :cascade do |t|
  t.string "code", null: false
end

create_table "helpdesks", id: :serial, force: :cascade do |t|
  t.string "name"
end

如您所见,我将@pizzas包括在内进行比较。但是对于披萨,我在控制器中查询对象名称,但不是促销代码值。

comparison

我为puts@pizzas做了@promo_codes,获得了相同的结果类型,但不太确定为什么1获得所需的值,但另一个没有。< / p>

我该怎么用谷歌指出我正确的方向? 谢谢!

2 个答案:

答案 0 :(得分:1)

在您的控制器促销代码上,如下所示

  @@promo_codes = PromoCode.all.order(:code)

并渲染以查看如下

collection: @promo_codes

<强>更新

尝试以下

 = f.input :promo_code_id, collection: @promo_codes, label_method: :code, value_method: :serial, label: "Promo Code", include_blank: false, class: "form-control"

答案 1 :(得分:0)

您需要在to_s模型中实施PromoCode def to_s name #or another field which you want to show end