传递id而不嵌套路由

时间:2015-12-31 15:36:30

标签: ruby-on-rails stripe-payments

我正在设置条带结帐表单,并且希望能够从订单模型中传递参数,而无需将费用资源嵌套在订单资源中。

在我的订单显示视图中,我有一个指向费用新视图页面的链接:

<%= link_to 'Checkout', new_charge_path(:order_id => @order.id ) %>

在充电控制器中:

def new
    @order = Order.find_by_id(:id)
end

这是将订单ID传递给费用/新网址。
因此,网址如下所示: / charge / new?order_id = 2

ChargesController的新方法中:@order = Order.find_by_id(:id) 我假设这样可以让我访问我的费用/新视图中的所有订单型号信息。问题是,如果我尝试将要收费的金额设置为订单模型中设置的总金额,我会得到一个未定义的方法错误。例如,我在我的收费新视图中试试这个:

<%= @order.total %>

这会引发以下错误:未定义的方法`total&#39;为零:NilClass 如果我从视图中删除该行,则错误消失。我猜这意味着URL中可用的订单ID不会将任何信息传递给控制器​​。

有人可以帮我理解这里发生了什么吗?

1 个答案:

答案 0 :(得分:1)

使用f代替params[:id]

:id