从表单中使用参数传递新对象

时间:2015-04-17 09:25:24

标签: ruby-on-rails ruby-on-rails-4

我有一个名为Order的模型,我希望使用下面的一些参数启动

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

我收到错误

  

nil的未定义方法`id':NilClass

是否容易分配参数而不是像

那样做
@order[:order_date] = DateTime.now
@order[user_id] = current_user.id

1 个答案:

答案 0 :(得分:1)

首先,你得到的错误是由于你的错误 current_user变量为nil。我想你不想在没有用户的情况下订购,所以你应该修改代码的逻辑来避免这种情况。

其次,如果您希望能够批量分配参数,则必须在控制器中指定创建或修改可以一次分配参数的对象:

@order = Order.new(order_params)

...

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