- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我似乎在通过连接表接收产品时遇到问题,这给了我一个奇怪的错误,因为它似乎没有收到我的订单的 ID。我只能假设这是因为订单尚未创建,但无论如何我都会在此步骤中创建订单,因此订单还没有 ID。所以这就是我的问题。
这是我收到的错误:
ActiveRecord::RecordNotFound in OrdersController#create
Couldn't find Product with ID=1 for Order with ID=
Rails.root: /BillingSystem
Application Trace | Framework Trace | Full Trace
app/controllers/orders_controller.rb:10:in `new'
app/controllers/orders_controller.rb:10:in `create'
Request
Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"jE2wdERoxE7PKwBhN60KAfguxwAq8qdW4wbru51SMFg=",
"order"=>{"client_id"=>"1",
"products_attributes"=>{"1368396234677"=>{"id"=>"1",
"_destroy"=>"false"}}},
"commit"=>"Create Order"}
Show session dump
Show env dump
Response
Headers:
None
新订单 View :
<% if current_user %>
<div id="dashboard">
<div id="logo"></div>
<table id="go_back_link_container">
<tr>
<td>
<div class="go_back_link">
<%= link_to "<- Go Back", "/orders/view" %>
</div>
</td>
<td>
<div id="user_display">
Logged in as <%= current_user.email %>.
<%= link_to "Log out", log_out_path %>
</div>
</td>
</tr>
</table>
<%= form_for @order, method: :post do |f| %>
<% if @order.errors.any? %>
<div class="error_messages">
<% for message in @order.errors.full_messages %>
* <%= message %> <br>
<% end %>
</div>
<% end %>
<p>
<%= f.label 'Select The Client' %><br />
<%= select :order, :client_id, Client.all().collect { |c| [ (c.firstname + " " + c.surname), c.id ] } %>
</p>
<%= f.fields_for :products do |pf| %>
<% #render 'product_fields', f: builder %>
<% end %>
<%= link_to_add_fields "Add Product", f, :products %>
<p class="button"><%= f.submit %></p>
<% end %>
<% flash.each do |name, msg| %>
<%= content_tag :div, "* " + msg, :id => "flash_#{name}" %><br />
<% end %>
<div id="copyright-notice"><div id="copyright_border">Copyright © Conner McCabe, all rights reserved.</div></div>
</div>
<% else %>
<script type="text/javascript">
window.location="<%= root_url %>"
</script>
<% end %>
订购型号:
class Order < ActiveRecord::Base
has_many :orderedproducts
has_many :products, through: :orderedproducts
has_one :client
attr_accessible :client_id, :order_total, :delivery_date, :products, :products_attributes
accepts_nested_attributes_for :products, :allow_destroy => true
before_save :generate_total
def generate_total
self.order_total = self.products.map(&:product_price).sum
end
end
订单 Controller :
class OrdersController < ApplicationController
def view
@orders = Order.all
end
def new
@order = Order.new
end
def create
@order = Order.new(params[:order])
if @order.save
redirect_to '/orders/view', :notice => "Order Created!"
else
render "new"
end
end
end
部分产品字段:
<fieldset>
<%= f.select :id, Product.all().collect {|p| [ p.product_name, p.id ] } %>
<%= f.hidden_field :_destroy %>
<%= link_to "remove", '#', class: "remove_fields" %>
</fieldset>
产品型号:
class Product < ActiveRecord::Base
#This line makes these elements accessible outside of the class.
attr_accessible :product_name, :product_price, :product_quantity, :product_supplier
has_many :orderedproducts
has_many :orders, through: :orderedproducts
#These attributes ensure that the data entered for each element is valid and present.
validates_presence_of :product_name
validates_presence_of :product_price
validates_numericality_of :product_price
validates_presence_of :product_quantity
validates_numericality_of :product_quantity
validates_presence_of :product_supplier
end
应用程序助手:
module ApplicationHelper
def link_to_add_fields(name, f, association)
new_object = f.object.send(association).klass.new
id = new_object.object_id
fields = f.fields_for(association, new_object, child_index: id) do |builder|
render(association.to_s.singularize + "_fields", f: builder)
end
link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
end
end
订购的产品型号:
class Orderedproduct < ActiveRecord::Base
attr_accessible :order_id, :product_id, :quantity_ordered
belongs_to :order
belongs_to :product
end
我列出了所有可能包含错误的文件,我知道这有点过分,但它是与它有关的所有内容,包含它总比不包含它更好。
我还遵循了这个railscast指南:http://railscasts.com/episodes/196-nested-model-form-revised为了达到我现在的目的,我对其进行了稍微编辑,以使其适合我的应用程序。
提前致谢。
最佳答案
我们在一个项目中遇到了类似的问题,只不过关系是单一的。问题是 ActiveRecord 正在寻找现有的关联;类似于 order.products.find(1)。由于订单是新记录,因此这是行不通的。
您可以创建自己的 products_attributes= 方法并定义正确的行为。但我认为您可以只使用连接模型 (Orderedproduct) 的嵌套属性而不是 Product。
class Order
accepts_nested_attributes_for :orderedproducts
end
然后适当调整表单字段。以新形式
f.fields_for :products do |pf|
变成f.fields_for :orderedproducts do |pf|
在部分字段中
<%= f.select :id, Product.all().collect {|p| [ p.product_name, p.id ] } %>
变成<%= f.select :product_id, Product.all().collect {|p| [ p.product_name, p.id ] } %>
关于mysql - rails : Issue with recieving nested forms with has many through join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16512588/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我想开发一个允许用户通过 Firebase 消息传递相互交互的应用程序,但问题是: 教程和开源项目只能在 Activity 运行时使用:例如,This GitHub Project和 This Sta
我正在努力制作我的基本锁屏应用程序。开始时,该应用程序显示一个基本 Activity 屏幕,带有一个 ImageView (显示存储中的图像)和一个 TextView(显示日期和时间)。向上滑动时,
本帖有更新,看第一个回答 所以,首先,我确实搜索了类似的问题(并找到了一些线程),但没有解决我的问题。我是第一次尝试使用 quasar 框架,也许我在命名空间的某个地方迷路了。 所以,首先,一些信息:
我正在尝试编写一个接收JSON数据的API,我能够接收数据,但不确定如何读取或提取其内容。我的代码行是:。我发送了cURL命令cURL-X POST http://127.0.0.1:8000/pos
我试图通过套接字发送帧,并且在编码后通常是50 000-80 000字节,所以我按循环接收数据,但是由于客户端始终发送帧,因此以下代码中的循环始终不会中断,因此当我运行时什么也没有发生,并且接收循环继
我正在使用 AngularJS,我正在尝试将 json 从我的服务发送到 webAPI Controller 。当我通过发送时,我在 webApi 函数的参数中收到 null。 我的功能服务是: an
我正在使用 C++ 和弯路处理 Hook winsock2 函数的 dll。我的目标是修改进出原始可执行文件的 TCP 流量。在某些时候,我需要停止某些数据包的传递(这样原始可执行文件根本不知道该数据
我正在用 C 语言制作一个简单的 TCP 客户端-服务器,我正在尝试从客户端向服务器发送消息,但我遇到了一些问题。服务器确实发送消息(整数值 > 0)但客户端无法接收它(整数值 > 0)这是代码:客户
在 Apple 的 ObjC 运行时指南中,它描述了 objc_msgSend() 函数对动态调度的作用: It first finds the procedure (method implement
以下代码是一个旨在发送 ICMP 回显请求和接收回复的程序。 /* Forgive my lack of error handling :) */ SOCKET ASOCKET = INVAL
我是这个网站的新手,也是 Android 新手。我正在尝试为 TCP 客户端编写代码。我也可以发送数据并接收数据。我想从 in 缓冲区中读取数据,我可以使用 in.readLine(); ,但这只会读
我做了一个python服务器和一个java客户端。我的问题很简单:服务器收到客户端的消息,但客户端没有得到回复。 Java 客户端: package fgd; import java.io.DataI
我似乎在通过连接表接收产品时遇到问题,这给了我一个奇怪的错误,因为它似乎没有收到我的订单的 ID。我只能假设这是因为订单尚未创建,但无论如何我都会在此步骤中创建订单,因此订单还没有 ID。所以这就是我
我问这个问题是因为我不明白我搜索的问题所提供的解释,所以这个问题可能很常见。我使用另一个人的代码来尝试了解它是如何工作的,以便复制它。在可注入(inject)的方法之一中,原作者返回一个 promis
我有 C 语言的客户端/服务器程序,通过它我可以将文件从服务器传输到客户端。 但客户端甚至在收到文件的最后一个字节后仍在等待 recv。只有当我杀死它或服务器被我杀死时,客户端才会终止。但是服务器必须
在 WPF 4.0 中,如果我在加载用户控件后在窗口中交换用户控件,我似乎无法使用任何键盘快捷键。一个代码示例说了一千个字,所以这就是我正在做的: Window window = new Window
我一直无法找到 oracle.net.ns.Packet.recieve() 方法的文档。此方法仅在选择查询时调用吗?或者它是否也在插入更新等时被调用? 我的应用程序大部分时间都花在了这个方法上。我可
我正在尝试从移动应用程序(用 React Native 编写,现在在 iOS 上运行)上传图像文件。 文件被发送到我的 REST API,如下所示。我遇到了两个问题: 我没有得到 req.body,因
我正在尝试使用 Go 构建一个基本 API,它使用 PostgreSQL library 返回 SQL 查询的结果。 . 目前我可以让程序返回值,但我无法让它向用户返回失败的消息,即一些带有错误消息的
我是一名优秀的程序员,十分优秀!