STRIPE ERROR: No route matches charges/new 错误

STRIPE ROR: No route matches charges/new error

我是ROR的新手,

我正在尝试使用此 link 将 stripe 集成到我的 ROR 项目中: https://stripe.com/docs/checkout/rails

当我转到 http://localhost:3000/charges/new 路线时,我已经按照他们的建议添加了所有内容,它给了我以下错误:

No route matches charges/new error

config/routes.rb

Rails.application.routes.draw do

  mount API::Root => '/'

  # Getting unmatched routes
  get '*unmatched_route', to: 'application#raise_not_found'

  resources :charges

end

生成的路线如下:

                   charges GET    /charges(.:format)                                           charges#index
                           POST   /charges(.:format)                                           charges#create
                new_charge GET    /charges/new(.:format)                                       charges#new
               edit_charge GET    /charges/:id/edit(.:format)                                  charges#edit
                    charge GET    /charges/:id(.:format)                                       charges#show
                           PATCH  /charges/:id(.:format)                                       charges#update
                           PUT    /charges/:id(.:format)                                       charges#update
                           DELETE /charges/:id(.:format)                                       charges#destroy

charges_controller.rb:

class ChargesController < ApplicationController
  def new
  end

  def create
    # Amount in cents
    @amount = 500

    customer = Stripe::Customer.create(
        :email => params[:stripeEmail],
        :source => params[:stripeToken]
    )

    charge = Stripe::Charge.create(
        :customer => customer.id,
        :amount => @amount,
        :description => 'Rails Stripe customer',
        :currency => 'usd'
    )

  rescue Stripe::CardError => e
    flash[:error] = e.message
    redirect_to 'new_charge_path'
  end
end

new.html.erb

<%= form_tag charges_path do %>
  <article>
    <% if flash[:error].present? %>
      <div id="error_explanation">
        <p><%= flash[:error] %></p>
      </div>
    <% end %>
    <label class="amount">
      <span>Amount: .00</span>
    </label>
  </article>

  <script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
          data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
          data-description="A month's subscription"
          data-amount="500"
          data-locale="auto"></script>
<% end %>

任何人都可以帮忙,我缺少什么?提前致谢。

路由文件的代码有一个小错误。

下面提到的代码应该在路由文件的最后。 [Refernce]而且我在该行下面添加了 resources :charges 代码,这就是我出现上述错误的原因。

# Getting unmatched routes
get '*unmatched_route', to: 'application#raise_not_found'

当我将 routes 文件 的内容更改为:

时,代码开始运行
  Rails.application.routes.draw do

    mount API::Root => '/'


    resources :charges

    # Getting unmatched routes
    get '*unmatched_route', to: 'application#raise_not_found'


  end