我正在尝试显示对象值的集合,但却改为#<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
包括在内进行比较。但是对于披萨,我在控制器中查询对象名称,但不是促销代码值。
我为puts
和@pizzas
做了@promo_codes
,获得了相同的结果类型,但不太确定为什么1获得所需的值,但另一个没有。< / p>
我该怎么用谷歌指出我正确的方向? 谢谢!
答案 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