2015-11-14 22 views
1

我無法在方法之間傳遞值。在我OrderController,我想通過從@order_id創建方法order_show方法。在order_show內檢查@order_id時,其值變爲零!Rails4:無法在方法之間傳遞值

不知道如何解決它。

令控制器

def create_order 
    @neworder = Order.new(order_params) 
    if @neworder.save 
    @[email protected] 
    #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 

回答

0

你需要更新你的create_order方法重定向請求,通過將訂單的ID來order_show_path。因此,您可以通過url訪問訂單ID作爲參數。

所以它應該是這樣的;

def create_order 
    @neworder = Order.new(order_params) 
    if @neworder.save 
     @[email protected] 
     #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 

你也需要設置你的路由。

+0

謝謝。有用。但是,獲取請求會暴露訂單ID。我想隱藏orderid。 redirect_to不支持發佈請求。我通過使用會話解決了問題,但尋找更好的方法。 – Khoga

+0

如果您想隱藏網址中的訂單ID,您需要按照您的說明將其存儲在會話變量中。就像是; '會議[:order_id] = @ orderid' – beydogan