0

我是 ruby​​ 和 rails 的新手,在我的学习中,我创建了我的 Order 的 Payment Types 数组。

class Order < ActiveRecord::Base

  PAYMENT_TYPES = [{:id => "check", :name => "Check"}, {:id => "credit_card", :name => "Credit card"}, {:id => "purchase_order", :name => "Purchase order"}]

我想用这种方式

<%= f.select :pay_type, Order::PAYMENT_TYPES.each {|order| [order.name, order.id]}, :prompt => 'Select a payment method' %>

但我收到了这个错误

undefined method `name' for {:id=>"check", :name=>"Check"}:Hash

怎么了?

4

1 回答 1

2

在您的块中,每次都用哈希填充each变量。order因此,您需要像哈希一样使用order[:name]andorder[:id]而不是.nameand来访问它.id

编辑

此外,为了可维护性,您可能希望创建一个单独的 PaymentType 模型。这会给你更多的力量和灵活性。使用您当前的方法,如果您想稍后添加或删除付款类型会怎样?您必须编辑源代码。如果您只希望某些付款方式可用于某些交易怎么办?

于 2012-11-24T22:11:22.283 回答