Rails4:无法在方法之间传递值

时间:2015-11-14 18:11:34

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

我不能在方法之间传递值。在我的OrderController中,我想将@order_id创建方法传递给 order_show 方法。当我在@order_id内检查order_show时,其值变为零!

不确定如何修复它。

订单控制器

def create_order
  @neworder = Order.new(order_params)
  if @neworder.save
    @order_id=@neworder.orderid
    #raise @order_id.inspect <---------shows orderid
    redirect_to order_show_path
  else
    render "new"
  end
end

def order_show
  raise @order_id.inspect <--------orderid is nil!
  @orderdlt=Order.find(@order_id)
end

1 个答案:

答案 0 :(得分:0)

您需要通过传递订单的ID来更新您的create_order方法以将请求重定向到order_show_path。因此,您可以从url访问订单ID作为参数。

所以它应该是这样的;

def create_order
   @neworder = Order.new(order_params)
   if @neworder.save
      @order_id=@neworder.orderid
      #raise @order_id.inspect <---------shows orderid
      redirect_to order_show_path(@order_id)
   else
      render "new"
   end
end

def order_show
   @order_id = params[:id]
   raise @order_id.inspect <--------orderid is nil!
   @orderdlt=Order.find(@order_id)
end

您也需要设置路线。