我正在开发一个订单管理系统,用户可以在其中向客户添加订单。到目前为止,我可以添加客户,编辑现有订单和删除现有客户。我可以通过ruby控制台向客户添加订单,但不能通过网络添加订单。我希望有人可以帮助我。
这是我得到Webversion的错误消息
> > ActiveRecord::RecordNotFound in OrdersController#create Couldn't find Customer with 'id'=
>
> Extracted source (around line #13): 11 12 13 14 15 16
>
>
> def create
> @customer = Customer.find params[:customer_id]
> @order = @customer.orders.new(params[:order])
> @order.save end
>
> Rails.root: /Users/cecil/Desktop/order_management_systeem
>
> Application Trace | Framework Trace | Full Trace
> app/controllers/orders_controller.rb:13:in `create' Request
>
> Parameters:
>
> {"utf8"=>"✓",
> "authenticity_token"=>"IB2vucl9bjhgPtSFaXo9BSSFSmE0WtClIOKKBo2H9PPz45v6nz8YWciwbVRMGoVnrgX/oNaZn84QONel4rpOcw==",
> "order"=>{"customer_id"=>"13", "order"=>"sdfada",
> "verstuurt"=>"false"}, "commit"=>"create"}
错误消息服务器版本
Started POST "/orders" for ::1 at 2015-11-30 11:43:05 +0100
Processing by OrdersController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"xZp71jR+ZJhvsO8qweF2v3MUBNisG7iGrHVXd1D79VMWZE+VYjwS+cc+Vvvkgc7d+ZSxGU7Y9+2crwrUP8ZP0w==", "order"=>{"customer_id"=>"16", "order"=>"Haha", "verstuurt"=>"false"}, "commit"=>"create"}
Customer Load (0.1ms) SELECT "customers".* FROM "customers" WHERE "customers"."id" = ? LIMIT 1 [["id", nil]]
Completed 404 Not Found in 1ms (ActiveRecord: 0.1ms)
ActiveRecord::RecordNotFound (Couldn't find Customer with 'id'=):
app/controllers/orders_controller.rb:13:in `create'
我的订单控制器
class OrdersController < ApplicationController
def index
@order = Order.find(params[:customer_id])
end
def new
@customer = Customer.find params[:customer_id]
@order = @customer.orders.new
end
def create
@customer = Customer.find(params[:customer_id])
@order = @customer.orders.new(params[:order])
@order.save
end
end
def show
@order = Order.find(params[:customer_id])
end
def edit
@customer = Customer.find(params[:customer_id])
end
def update
#Find a exisiting object using form paramters
@order = Order.find(params[:id])
if @order.update_attributes(order_params)
#if Update succeeds, redirect to the index action
flash[:notice] = "Subject updated successfully"
redirect_to(:action => 'show', :id => @order.id)
else
#If save fails, redisplay the form so user can fix problems
render('edit') #het zit in de new.html template
end
end
def delete
end
private
def order_params
params.require(:order).permit(:customer_id, :pakket, :verstuurt)
end
我的订单型号
> class Order < ActiveRecord::Base belongs_to :customers
>
> scope :visible, lambda { where(:visible => true) } scope :invisible,
> lambda { where(:visible => false) } scope :sorted, lambda {
> sorted("orders") } scope :newest_first, lambda {
> order("orders.created_at DESC")} scope :search, lambda {|query|
> where(["name LIKE ?", "%#{query}%"])} end
我的订单
<%= form_for @order do |f| %> <table summary="subject form fields">
<%= f.hidden_field :customer_id , :value=>params[:customer_id] %>
<tr>
<th>Package</th>
<td><%= f.text_field(:order) %></td>
</tr>
<tr>
<th>Sent</th>
<td><%= f.text_field(:verstuurt) %></td>
</tr> </table>
<div class="form-buttons">
<%= f.submit "create" %> </div> <% end %>
我的路由
Rails.application.routes.draw do
resources :orders do
resources :customers
end
get ':controller/:action/:id/:customer_id'
get ':controller/:action/:id/:customer_id'
get 'customers/index'
get 'customers/new'
get 'customers/show'
get 'customers/edit'
get 'customers/delete'
match ':controller(/:action(/:id))', :via => [:get, :post]
get 'orders/index'
get 'orders/new'
get 'orders/show'
get 'orders/edit'
get 'orders/delete'
答案 0 :(得分:0)
尝试从
更改隐藏字段<%= f.hidden_field :customer_id , :value=>params[:customer_id] %>
到
<%= f.hidden_field :customer_id , :value=> @order.customer_id %>