i getting following error on rails 4.2 application. i'm trying setup subscriptions stripe. subscription belongs business , has_one plan.
on view pass params in url: http://localhost:3000/subscriptions/new?plan_id=2&business_id=1001
after submit form error below , code follows. forgive me if beginner question.

subscriptions controller
class subscriptionscontroller < applicationcontroller before_action :set_subscription, only: [:show, :edit, :update, :destroy] # /subscriptions def index @subscriptions = subscription.all end # /subscriptions/1 def show end # /subscriptions/new def new @subscription = subscription.new @plan = plan.find_by id: params["plan_id"] @business = business.find_by id: params["business_id"] end # post /subscriptions def create @subscription = subscription.new subscription_params.merge(email: stripe_params["stripeemail"], card_token: stripe_params["stripetoken"]) raise "please, check subscription errors" unless @subscription.valid? @subscription.process_payment @subscription.save redirect_to @subscription, notice: 'subscription created.' rescue => e flash[:error] = e.message render :new end private def stripe_params params.permit :stripeemail, :stripetoken end # use callbacks share common setup or constraints between actions. def set_subscription @subscription = subscription.find(params[:id]) end # never trust parameters scary internet, allow white list through. def subscription_params params.require(:subscription).permit(:plan_id, :business_id) end end subscription model
class subscription < activerecord::base belongs_to :business has_one :plan def process_payment customer = stripe::customer.create email: email, card: card_token stripe::charge.create customer: customer.id, amount: plan.price * 100, description: plan.name, currency: 'usd' end end subscription view (new.html.erb)
<%= form_for @subscription |f| %> <% if @subscription.errors.any? %> <div id="error_explanation"> <h2> <%= pluralize(@subscription.errors.count, "error") %> prohibited subscription being saved: </h2> <ul> <% @subscription.errors.full_messages.each |message| %> <li> <%= message %> </li> <% end %> </ul> </div> <% end %> <h1><%= @business.name %></h1> <div class="field"> <%= f.hidden_field :plan_id, value: @plan.id %> </div> <div class="field"> <%= f.hidden_field :business_id, value: @business.id %> </div> <div class="actions"> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="<%= rails.application.secrets.stripe_publishable_key %>" data-image="/img/documentation/checkout/marketplace.png" data-name="business name" data-description="<%= @plan.name %>" data-amount="<%= @plan.price*100 %>"> </script> </div> <% end %> plan model
class plan < activerecord::base belongs_to :subscription end
calling render loads view action, doesn't run of logic in method behind action, why there no @plan available when render :new create action.
Comments
Post a Comment