2017-05-16 69 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

相關問題