O recurso Checkout do Stripe cria um token de carga do lado do cliente e então (assumindo que você seguiu a mesma sintaxe de nomenclatura no tutorial de trilhos do Stripe ) ele passa esse token para o ‘ChargesController.’
O checkout do Stripe não requer nenhuma interação com o seu banco de dados, portanto não há um modelo Charges. Isso também explica por que o ruby incorporado para o check-out Stripe JS do exemplo usa o método de tag de formulário em vez do método de formulário.
Sem um modelo, você não pode passar parâmetros facilmente de outro controlador para o controlador de cargas. Existem algumas soluções alternativas complicadas que você pode fazer usando auxiliares, sessões ou métodos no ‘ApplicationController’, mas essas soluções não são muito sucintas.
Você pode conseguir isso de maneira muito organizada usando rotas aninhadas. Em seu arquivo routes.rb aninhe o recurso de encargos dentro do recurso do qual você deseja herdar as variáveis.
# resourcename routes
resources :resourcename do |resourcename|
# Charges routes
resources :charges
end
Em seguida, você precisa atualizar as referências do caminho de cobrança.
<%= form_tag resourcename_charges_path(@resourcename) do %>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
></script>
<% end %>
Finalmente, atualize seu ‘ChargesController’ adicionando este código a cada método onde você chama a variável @resourcename.
@resourcename = Resourcename.find(params[:resourcename_id])