【发布时间】:2013-12-03 13:53:28
【问题描述】:
好的,这是我关于 SO 的第一个问题,所以请耐心等待(并随时评论我糟糕的问题格式等)
我正在使用 Rails 4 和 Stripe 为客户构建一个 SaaS 站点。我正在关注这个railscast(请记住它是为 Rails 3 编写的——以及Stripe docs。
我刚刚按照 railscast 说明编辑了我的 subscriptions.js.coffee 文件。此时,当我在订阅/新表单上单击 subscribe 时,我应该会收到一个带有响应 ID 的 js 警报,但是,我只是被重定向到 http://localhost:3000/subscriptions/X
我提供了我认为相关的文件,但是,我是 Rails 的新手,所以如果需要其他信息来回答问题,请告诉我!谢谢!
我还应该补充一点,我已经禁用了 turbolinks,因为有些人指出这会导致问题。
# subscriptions.js.coffee #
jQuery ->
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))
subscription.setupForm()
subscription =
setupForm: ->
$('#new_subscription').submit ->
$('input[type=submit]').attr('disabled', true)
subscription.processCard()
processCard: ->
card =
number: $('#card_number').val()
cvc: $('#card_code').val()
expMonth: $('#card_month').val()
expYear: $('#card_year').val()
Stripe.createToken(card, subscription.handleStripeResponse)
handleStripeResponse: (status, response) ->
if status == 200
alert(response.id)
else
alert(response.error.message)
# subscriptions/new.html.erb #
<h1>Signing up for "<%= @subscription.plan.name %>"</h1>
<p>Includes <strong><%= @subscription.plan.business_plans %> Business Plans</strong> for only <strong><%= number_to_currency @subscription.plan.price %></strong> per month!</p>
<%= form_for @subscription do |f| %>
<% if @subscription.errors.any? %>
<div class="error_messages">
<h2><%= pluralize(@subscription.errors.count, "error") %> prohibited this subscription from being saved:</h2>
<ul>
<% @subscription.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.hidden_field :plan_id %>
<div class="field">
<%= f.label :email %>
<%= f.text_field :email %>
</div>
<div class="field">
<%= label_tag :card_number, "Credit Card Number" %>
<%= text_field_tag :card_number, nil, name: nil %>
</div>
<div class="field">
<%= label_tag :card_code, "Security Code on Card (CVV)" %>
<%= text_field_tag :card_code, nil, name: nil %>
</div>
<div class="field">
<%= label_tag :card_month, "Card Expiration" %>
<%= select_month nil, {add_month_numbers: true}, {name: nil, id: "card_month"} %>
<%= select_year nil, {start_year: Date.today.year, end_year: Date.today.year+15}, {name: nil, id: "card_year"} %>
</div>
<div class="actions">
<%= f.submit "Subscribe" %>
</div>
<% end %>
# subscriptions_controller.rb #
class SubscriptionsController < ApplicationController
def new
plan = Plan.find(params[:plan_id])
@subscription = plan.subscriptions.build
end
def create
@subscription = Subscription.new(subscription_params)
if @subscription.save
redirect_to @subscription, :notice => "Thank you for subscribing!"
else
render :new
end
end
def show
@subscription = Subscription.find(params[:id])
end
private
def subscription_params
params.require(:subscription).permit(:plan_id, :email)
end
end
【问题讨论】:
标签: ruby-on-rails coffeescript ruby-on-rails-4 stripe-payments