2017-05-16 71 views
-2

我想争端的创建Order对象机智争议的标的物相关联,但是当我去创建日志中的对象显示:Rails如何在创建时关联2个模型?

的ActiveRecord :: RecordNotFound(找不到订单没有ID)

我应该不试图找到方法中的顺序?

有人知道如何关联创建中的对象吗?

争议控制器是:

class DisputesController < ApplicationController 

    def new 

    if current_user.address.blank? 
     redirect_to edit_user_path 

     flash[:error] = 'fill the address' 
    else 
     @dispute = Dispute.new 

    end 
    end 



def create 
@order = Order.find(params[:id]) 
    if current_user == @order.buyer 
    dispute = @order.dispute.nil? ? Dispute.new : @order.dispute 
    dispute.attributes = params[:dispute] 
    dispute.user = @order.buyer 
    dispute.buyer_name = @order.buyer_name 
    dispute.seller_name = @order.seller_name 

    if dispute.save 
     flash[:success] = 'Dispute Created' 
    end 

end 

顺序模型

class Order < ActiveRecord::Base 

has_one :dispute 

end 

争端模型

class Dispute < ActiveRecord::Base 

belongs_to :order 

end 
+0

'id'在create方法中没有值。 – ferit

+0

@Saibot,所以我无法找到创建方法? – bookaka

回答

0

我根据你所得到的错误首先想到的是检查什么你可以在表单提交时获得参数,因为它看起来没有找到O.基于你传递给查找调用的参数。

还检查了强大的PARAMS安全:http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html

+0

莱利汤普森是的,那么如何检查哪些参数是可用的? – bookaka

+0

研究像Pry或ByeBug这样的调试工具。它们是一个简单的宝石,它会在执行过程中停止你的代码,你可以调用params散列来查看它填充的内容。另外,我相信rails错误消息会在某些情况下抛出错误时包含参数值。所以在这种情况下,如果我在该控制器的create方法的顶部使用撬,则会对Binding.pry进行调用。然后,我会启动本地服务器并提交表单,然后它将执行该操作,并且您将在命令行中有一个新的pry会话来调用可用变量。 –

+0

莱利,谢谢你,但我使用的是Rails 3.所以,强参数不在这里。 – bookaka

相关问题