...在orderscontroller#new中用于创建一个数组,该数组用于视图中表单字段的select方法,它应该添加一个新订单
你好,
所以我的错误是
路由错误
未定义的局部变量或方法 `array_of_payment_types' for #
现在,我有一个表单的选择字段来提交新订单,但是我的浏览器不会加载包含表单的页面:
<div class="field">
<%= f.label :pay_type %><br />
<%= f.select :payment_type_id, Order::PAYMENTS_TYPES,
:prompt => 'Select a payment method' %>
</div>
这是使用我尝试创建两次的数组:
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 也不起作用呢?
提前感谢您的帮助:-)
更多信息...
我想要做的是创建一个新订单,使用表单,表单中的一个字段输入“pay_type”(或英文支付类型)。我想向用户提供选项,该选项是从 PaymentType 表中的条目“提取”的列表,列 :pay_type_name (我可能会重复自己,但没有害处)。但是新订单是在 Order#new 操作之后创建的,这是我创建数组的地方。我应该在哪里/如何创建数组?