0

私はRubyとRailsが初めてで、私の研究で、注文のこの支払いタイプの配列を作成しました..

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 に答える