title: Trouble Creating Rails Stripe Subscription
body: <p>New-ish Ruby Rails programmer here, please help me learn.  I am having a difficult time creating a subscription in Stripe.  It is an app where schools will be registering to.  I already created a plan in Stripe with an ID called, 'reach' and I am able to create a Stripe Customer Token, but not a Subscription.</p>
  
  <p>On my registration form (in views), I have a hidden_field_tag with the plan name as 'reach' which is passed through the URL, params.  I also have a hidden field in the form of the stripeToken.</p>
  
  <p>I have a class called SchoolRegistration and the code underneath is here:</p>
  
  <pre><code>attr_accessor :stripeToken
  attr_accessor :plan
  
  def save_with_subscription
  
   if valid?
    customer = Stripe::Customer.create(description: email, plan: plan, source: stripeToken)
     self.stripe_customer_token = customer.id
     save!
  
   end
  end
  </code></pre>
  
  <p>What I discovered recently is the <code>&lt;%= hidden_field_tag :plan, params[:plan] %&gt;</code> in my views is NOT saving to my database.  I can see it on my console when I hit submit, but it never gets saved to the database.  How can I save that in the database?</p>
  
  <p>Controller:</p>
  
  <pre><code>    class SchoolRegistrationsController &lt; ApplicationController
  
        def new
          @register = SchoolRegistration.new
        end
  
        def create
          @register = SchoolRegistration.new(register_params)
  
  
          if @register.save_with_subscription
            flash[:success] = "Congratulations!  You have registered your school!
            redirect_to new_user_registration_path
  
          else
            flash[:danger] = @register.errors.full_messages.join(", ")
            redirect_to new_registration_path
          end
        end
  
        private
          def register_params
  params.require(:school_registration).permit(:name_of_person_completing_form, :email, :role_in_school, :school_name, :grade_levels, :street_name, :city, :state, :zip_code)
          end
      end
  </code></pre>
  
  <p>params.require is indented in my code...not sure why it wouldn't indent here.</p>
  
  <p>JavaScript:</p>
  
  <pre><code>/* global $ Stripe */
  //Document ready.
  $(document).on('turbolinks:load', function(){
  
    //Set Stripe public key.
    var stripe = Stripe($('meta[name="stripe-key"]').attr('content'));
    var elements = stripe.elements();
  
    // Custom styling can be passed to options when creating an Element.
    var style = {
      base: {
        // Add your base input styles here. For example:
        fontSize: '16px',
        color: "#32325d",
      }
    };
  
    // Create an instance of the card Element
    var card = elements.create('card', {style: style});
  
    // Add an instance of the card Element into the `card-element` &lt;div&gt;
    card.mount('#card-element');
  
    card.addEventListener('change', function(event) {
      var displayError = document.getElementById('card-errors');
      if (event.error) {
        displayError.textContent = event.error.message;
      } else {
        displayError.textContent = '';
      }
    });
  
    var form = document.getElementById('payment-form');
    form.addEventListener('submit', function(event) {
      event.preventDefault();
  
      stripe.createToken(card).then(function(result) {
        if (result.error) {
          // Inform the customer that there was an error
          var errorElement = document.getElementById('card-errors');
          errorElement.textContent = result.error.message;
  
        } else {
          // Send the token to your server
          stripeTokenHandler(result.token);
        }
      });
    });
  });
  
  function stripeTokenHandler(token) {
    // Insert the token ID into the form so it gets submitted to the server
    var form = document.getElementById('payment-form');
    var hiddenInput = document.createElement('input');
    hiddenInput.setAttribute('type', 'hidden');
    hiddenInput.setAttribute('name', 'stripeToken');
    hiddenInput.setAttribute('value', token.id);
    form.appendChild(hiddenInput);
  
    // Submit the form
    form.submit();
  }
  </code></pre>
  
  <p>I know it is probably obvious, I am just having a difficult time and I did check out the documentation.  Please help me learn and much thanks to all of you!  Let me know if you need more info or code - using Rails 5.</p>