2015-11-14 21 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