简体   繁体   中英

Rails4: Cannot pass value between methods

I cannot pass value between methods. In my OrderController, I want to pass the @order_id from create method to order_show method. When I check @order_id inside order_show , its value become nil!

Not sure how to fix it.

Order controller

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

You need to update your create_order method to redirect request to order_show_path by passing the order's id. So you can access order id from url as parameter.

So it should be something like this;

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

You need to setup your routes too.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM