I'm just learning how to use Payola to create Subscriptions for my RoR 5.1.5 test app. I'm following along with the instructions on the wiki.
I've set up the sample form taken from the example on the Wiki and dropped it right into app/views/subscriptions/new.html.erb. When I enter the credit card, email, expiration date and click Submit, I get this Rails error: undefined method `amount' for nil:NilClass
I've created the SubscriptionPlan in the rails console and confirmed it exists. I've confirmed that the new Plan shows up in my Stripe dashboard after creating it in the console.
I'm sure I've overlooked something, and hoping someone has experienced this same issue and can point me in the right direction. It feels like I am not specifying the plan anywhere. I'm not sure how I should do that.
Thanks for your help.
Code is here. app/models/subscription_plan.rb
class SubscriptionPlan < ActiveRecord::Base
include Payola::Plan
end
/app/controllers/subscriptions_controller.rb
class SubscriptionsController < ApplicationController
# bring in the `render_payola_status` helper.
include Payola::StatusBehavior
def new
@plan = SubscriptionPlan.first
end
def create
# do any required setup here, including finding or creating the owner object
owner = current_user # this is just an example for Devise
# set your plan in the params hash
params[:plan] = SubscriptionPlan.find_by(id: params[:plan_id])
# call Payola::CreateSubscription
subscription = Payola::CreateSubscription.call(params, owner)
# Render the status json that Payola's javascript expects
render_payola_status(subscription)
end
end
/app/views/subscriptions/new.html.erb
<!-- this header can go in <head> or at the bottom of <body> -->
<%= render 'payola/transactions/stripe_header' %>
<%= form_tag('/subscriptions',
class: 'payola-onestep-subscription-form',
'data-payola-base-path' => '/payola',
'data-payola-plan-type' => @plan.plan_class,
'data-payola-plan-id' => @plan.id
) do |f| %>
<span class="payola-payment-error"></span>
Email:<br>
<input type="email" name="stripeEmail" data-payola="email"></input><br>
Card Number<br>
<input type="text" data-stripe="number"></input><br>
Exp Month<br>
<input type="text" data-stripe="exp_month"></input><br>
Exp Year<br>
<input type="text" data-stripe="exp_year"></input><br>
CVC<br>
<input type="text" data-stripe="cvc"></input><br>
<input type="submit"></input>
<% end %>
/app/config/routes.rb
Rails.application.routes.draw do
devise_for :users
root to: "pages#index"
resources :subscriptions
get 'pages/index'
get 'pages/donate'
mount Payola::Engine => '/payola', as: :payola
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end