我试图在本教程之后将Stripe添加到我的Rails应用程序中,但无法弄清楚出了什么问题:
Assigning Charges To Resources With Stripe Checkout
以下是我的代码,
的routes.rb
resources :people, :path => "" do
member do
put :activate
put :deactivate
end
resources :listings do
member do
put :close
put :move_to_top
put :show_in_updates_email
end
resources :charges
end
和.haml
= form_tag listings_charges_path(@listings) do
但是有如下错误:
undefined method `listings_charges_path' for #<#<Class:0x007f0690ea1788>:0x007f06b1864b88>
= form_tag listings_charges_path(@listings) do
是因为收费是否嵌套在列表资源中,而列表还嵌套在另一个列表中?这很奇怪,因为如果我将代码更改回没有嵌套的资源,它完全正常工作。
= form_tag charges_path do
非常感谢任何帮助。
谢谢!
这很有效,但有一些新内容:
= form_tag person_listing_charges_path(@person, @listing, @charges) do
新错误:
No route matches missing required keys:{:action=>"index", :controller=>"charges", :id=>"111-abc", :listing_id=>nil, :locale=>nil, :person_id=>#<Listing id: 111, ..........} [:listing_id]
答案 0 :(得分:0)
如果你想这样做,你的路径是people_listing_charge_path(@people, @listing, @charge)
。或者也许person_listing_charge_path(@person, @listing, @charge)
取决于Rails助手的工作原理。正如您所看到的,处理起来非常麻烦。
如果您检查Rails guide on nested route,它会建议一些处理嵌套的方法。我强烈建议你遵循这些建议。
答案 1 :(得分:0)
你可能应该这样做(如果你的人是单数的人)
person_listing_charge_path(@person, @listing, @charge)
要了解您的路线,您可以rake routes
仅供参考:根据ruby on rails guides
资源不应该嵌套超过1级。