...配列を作成するためにorderscontroller#newで使用されます。これは、ビューのフォームフィールドのselectメソッドで使用され、新しい順序を追加することになっています。
そこのハロー、
だから私のエラーはこれです
ルーティングエラー
#の未定義のローカル変数またはメソッド `array_of_payment_types'
これで、新しい注文を送信するためのフォーム用のこの選択フィールドがありますが、ブラウザがフォームを含むページをロードしません。
<div class="field">
<%= f.label :pay_type %><br />
<%= f.select :payment_type_id, Order::PAYMENTS_TYPES,
:prompt => 'Select a payment method' %>
</div>
これは、私が2回作成しようとしている配列を使用しています。
class Order < ActiveRecord::Base
...
belongs_to :payment_type
**PAYMENT_TYPES = array_of_payment_types**
validates :name, :address, :email
validates :pay_type, :inclusion => { :in => PAYMENT_TYPES }
...
**def array_of_payment_types
PaymentType.pluck(:pay_type_name)
end**
end
そしてここ:
class OrdersController < ApplicationController
...
def new
@cart = current_cart
if @cart.line_items.empty?
redirect_to store_url, :notice => "Your cart is empty"
return
end
**@PAYMENT_TYPES = array_of_payment_types**
@hide_checkout_button = true
@order = Order.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @order }
end
end
...
end
一方、:pay_type_name列のPayment_Typeテーブルからエントリを「取得」する配列を作成するメソッドは、order.rbとApplicationControllerの両方で宣言されています。
class ApplicationController < ActionController::Base
protect_from_forgery
private
...
def array_of_payment_types
PaymentType.pluck(:pay_type_name)
end
end
今、私は自分のアプリケーションの他の部分と同じプロセスを使用しようとしていますが、すでに行ったことを複製するだけです。たとえば、OrdersController#newには
@cart = current_cart
current_cartは、ApplicationsControllerで宣言されたメソッドであり、機能します。では、なぜarray_of_payment_typesも機能しないのでしょうか。
事前にご協力いただきありがとうございます:-)
さらに詳しい情報...
私がこれでやろうとしているのは、フォームを使用して新しい注文を作成することです。フォームのフィールドの1つに「pay_type」(または英語の支払いタイプ)が入力されます。PaymentTypeテーブルの列:pay_type_nameのエントリから「抽出」されたリストであるオプションをユーザーに提示したいと思います(繰り返しますが、害はありません)。ただし、新しいOrderは、配列を作成したOrder#newアクションの後に作成されます。アレイはどこで/どのように作成すればよいですか?