2015-04-17 47 views
0

我呼籲訂單的模型Rails的使用參數的新對象,我想有一些PARAMS開始像下面從形式

@order = Order.new(user_id: current_user.id, type_of_order: 'events', order_date: DateTime.now) 

我得到的錯誤

未定義的方法'身份證」的零:NilClass

有一個易於大規模分配有參數,不必像做

@order[:order_date] = DateTime.now 
@order[user_id] = current_user.id 
+3

它說,'current_user'是'nil',表示用戶還未登錄。它不是質量分配問題 – RAJ

+0

@RAJ是正確的。 –

+0

該死的:(感謝很多傢伙:) –

回答

1

首先,您遇到的錯誤是由於您的 current_user變量爲nil。我想你不想在沒有用戶的情況下下訂單,所以你應該修改你的代碼邏輯來避免這種情況。

第二,如果你希望能夠爲您必須指定控制器創建或修改其參數可以一次分配的對象質量分配參數:

@order = Order.new(order_params) 

... 

private 
def order_params 
    params.require(:order).permit(:order_date, :user_id) 
end 
+1

在Rails 4中,'attr_accessible'已經從模型移動到控制器,被稱爲[strong parameters](http://weblog.rubyonrails.org/2012/3/21/強參數/) – rubyprince

+0

對不起,我沒有看到ror 4標籤,仍然使用3.2,我會編輯。 – Miotsu