我有一个订单模型。
客户可以获得一些对消费者友好的视图,让他们可以创建和查看自己的订单,所有这些都由 Orders 控制器提供支持。
管理员可以在采购控制器的支持下获得创建、编辑、查看、删除和管理订单的全部视图。
据我所知,Purchase 控制器应该只与 Order 模型对话,但以下错误消息让我认为它正在寻找一个不存在的 Purchase 模型:
ActiveRecord::StatementInvalid in PurchasesController#new
NameError in PurchasesController#new
uninitialized constant Purchase
Rails.root: /Users/steven/Dropbox/testivate
这就是错误的意思吗?如果是这样,我如何阻止 Purchases 控制器尝试查找 Purchase 模型?
我的代码...
应用程序/控制器/purchases_controller.rb:
class PurchasesController < ApplicationController
def new
@purchase = Order.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @purchase }
end
end
def create
@purchase = Order.new(params[:purchase])
respond_to do |format|
if @purchase.save
format.html { redirect_to purchase_path(@purchase), notice: 'Purchase was successfully created.' }
format.json { render json: @purchase, status: :created, location: @purchase }
else
format.html { render action: "new" }
format.json { render json: @purchase.errors, status: :unprocessable_entity }
end
end
end
end
/config/routes.rb:
Testivate::Application.routes.draw do
resources :orders
resources :purchases
end
/app/views/purchases/new.html.haml:
.textbox
%p#notice= notice
%h1 New Purchase
= render 'form'
= link_to 'List Purchases', purchases_path
/app/views/purchases/_form.html.haml:
= simple_form_for @purchase do |f|
= f.error_notification
= f.input :name
= f.button :submit
更新:所以我刚刚意识到“事务”是 Rails 中的保留字,所以我改变了它。但是还有什么我需要解决的吗?
*更新 2:当我完全注释掉 #new 视图和 _form 时,我仍然会收到错误消息,所以我认为问题出在我的控制器或路由或其他地方,而不是我使用 simple_form。*