Rails 4 个路由参数和路径反转

Rails 4 Routes Params and Path Reversed

我的应用环境是Rails4,Ruby2.1.8

我正在尝试在列表页面上添加 Stripe 结帐按钮,如您所知,Stripe 的结帐不需要与您的数据库进行任何交互,因此没有收费模型。这也解释了为什么示例中的 Stripe JS 结帐的嵌入式 ruby 使用表单标记方法而不是方法的表单。

所以我就是想把listing id传过去自己存起来做参考。但是我的 Rails 路由行为确实有些奇怪:

routes.rb

# stripe
resources :charges

.haml 中的表单标签

= form_tag charges_path(@listing.id) do

不管我怎么查,Param 和 Path 总是颠倒的

<form method="post" accept-charset="UTF-8" action="/111/charges">

我怎样才能到达下面呢?

<form method="post" accept-charset="UTF-8" action="/charges/111">

您需要更改 for 路径,以便 Rails 知道您传递的是什么。

form_tag charges_path(id: @listing.id)