我在尝试测试客户帐户时整天都收到此错误。你能告诉我一个通过它的方法吗?我将在下面发布我的订阅控制器和routes.rb的内容。
Subscriptions_controller.rb
class SubscriptionsController < ApplicationController
before_filter :authenticate_user!, except: [:new]
before_action :redirect_to_signup, only: [:new]
def show
end
def new
@subscription = current_user.subscription
if @subscription.active
@stripe_customer = Stripe::Customer.retrieve(@subscription.stripe_user_id)
@stripe_subscription = @stripe_customer.first
end
end
def create
token = params[:stripeToken]
customer = Stripe::Customer.create(
source: token,
plan: "gbsubscriptionlevel1",
email: current_user.email
)
current_user.subscription.stripe_user_id = customer.id
current_user.subscription.active = true
current_user.subscription.save
redirect_to users_index_path
end
def destroy
end
private
def redirect_to_signup
if !user_signed_in?
session["user_return_to"] = new_subscription_path
redirect_to new_user_registration_path
end
end
end
_Stripe_form.html.erb
<div class="container">
<%= form_tag subscription_path, id: 'payment-form' do %>
<form action="/subscription" method="POST" id="payment-form">
<span class="payment-errors"></span>
<div class="row">
<div class="col-xs-4">
<label>
<span>Card Number</span>
<input value="4242 4242 4242 4242" class="form-control" type="text" size="20" data-stripe="number"/>
</label>
</div>
</div>
<div class="row">
<div class="col-xs-1">
<label>
<span>CVC</span>
<input value="123" class="form-control" type="text" size="4" data-stripe="cvc"/>
</label>
</div>
</div>
<div class="row">
<div class="col-xs-1">
<label>MM</label>
<input value="12" class="form-control" type="text" size="2" data-stripe="exp-month" placeholder="01"/>
</div>
<div class="col-xs-1">
<label>YYYY</label>
<input value="2019" class="form-control" type="text" size="3" data-stripe="exp-year" placeholder="2020"/>
</div>
</div>
<div class="row">
<div class="col-xs-1">
<br/>
<button class="btn btn-primary-outline" type="submit">Create Subscription</button>
</div>
</div>
</form>
<% end %>
</div>
的routes.rb
resource :subscriptions
subscription.js.coffee
jQuery ->
Stripe.setPublishableKey($("meta[name='stripe-key']").attr("content"))
$('#payment-form').submit (event) ->
$form = $(this)
# Disable the submit button to prevent repeated clicks
$form.find('button').prop 'disabled', true
Stripe.card.createToken $form, stripeResponseHandler
# Prevent the form from submitting with the default action
false
stripeResponseHandler = (status, response) ->
$form = $('#payment-form')
if response.error
# Show the errors on the form
$form.find('.payment-errors').text response.error.message
$form.find('button').prop 'disabled', false
else
# response contains id and card, which contains additional card details
token = response.id
# Insert the token into the form so it gets submitted to the server
$form.append $('<input type="hidden" name="stripeToken" />').val(token)
# and submit
#$form.get(0).submit()
return
服务器日志/ Stacktrace
Started POST "/subscriptions" for 127.0.0.1 at 2016-02-10 20:24:22 -0500
Processing by SubscriptionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"B7ErmlwhWi4unI+r6um3MbZjPwfixfAXi4SiHpOrTUXphOh9kt07cEbC5CuuodrrIDRx4/L05l3VkgS6r+tKGA=="}
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 5]]
Completed 500 Internal Server Error in 1119ms (ActiveRecord: 1.0ms)
Stripe::InvalidRequestError (This customer has no attached payment source):
app/controllers/subscriptions_controller.rb:19:in `create'
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/templates/rescues/_source.erb (1.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (4.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/actionpack-4.2.3/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (55.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/web-console-2.3.0/lib/web_console/templates/_markup.html.erb (1.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/web-console-2.3.0/lib/web_console/templates/_inner_console_markup.html.erb within layouts/inlined_string (1.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/web-console-2.3.0/lib/web_console/templates/_prompt_box_markup.html.erb within layouts/inlined_string (0.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/web-console-2.3.0/lib/web_console/templates/style.css.erb within layouts/inlined_string (0.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/web-console-2.3.0/lib/web_console/templates/console.js.erb within layouts/javascript (58.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/web-console-2.3.0/lib/web_console/templates/main.js.erb within layouts/javascript (1.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/web-console-2.3.0/lib/web_console/templates/error_page.js.erb within layouts/javascript (0.0ms)
Rendered C:/Ruby217/Ruby21/lib/ruby/gems/2.1.0/gems/web-console-2.3.0/lib/web_console/templates/index.html.erb (129.1ms)
请求表单的断点
<h2 style="margin-top: 30px">Request</h2>
<p><b>Parameters</b>:</p>
<pre>{"utf8"=>"✓",
"authenticity_token"=>"0WVA1LNXqv97iQ47UYgitLTiAQQxOGfAl/YatYy/CXM/UIMzfavLoRPXZbsVwE9uIrVP4CEJcYrJ4LwRsP8OLg=="}</pre>
<div class="details">
<div class="summary"><a href="#" onclick="return toggleSessionDump()">Toggle session dump</a></div>
<div id="session_dump" style="display:none">
<pre>_csrf_token: "7jXD5878YV5oXmuAREht2pZXTuQQMRZKXhampDxAB10="
session_id: "c9c8419f0e529507fc786aa8241044bf"
warden.user.user.key: [[5], "$2a$10$BbVveau77t6o1fJOMKxiFO"]</pre>
</div>
</div>
<div class="details">
<div class="summary"><a href="#" onclick="return toggleEnvDump()">Toggle env dump</a></div>
<div id="env_dump" style="display:none">
<pre>GATEWAY_INTERFACE: "CGI/1.2"
HTTP_ACCEPT: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
HTTP_ACCEPT_ENCODING: "gzip, deflate"
HTTP_ACCEPT_LANGUAGE: "en-US,en;q=0.8"
HTTP_CACHE_CONTROL: "max-age=0"
REMOTE_ADDR: "127.0.0.1"
SERVER_NAME: "127.0.0.1"
SERVER_PROTOCOL: "HTTP/1.1"</pre>
</div>
</div>
<h2 style="margin-top: 30px">Response</h2>
<p><b>Headers</b>:</p>
<pre>None</pre>
</div>
<div id="console" data-mount-point="/__web_console" data-session-id="ac2f197d51af2911171590df30f981c7"
data-prompt-label=">> " class=" console">
<div class="resizer layer pos-absolute border-box"></div>
<div class="console-outer layer pos-absolute border-box">
<div class="console-actions pos-fixed pos-right">
<div class="close-button button border-box" title="close">x</div>
</div>
<div class="console-inner">
<div class="console-prompt-box"><span class="console-prompt-label">>> </span>
<pre class="console-prompt-display"><span class="console-cursor"> </span></pre>
</div>
</div>
</div>
答案 0 :(得分:0)
经过一天的搜索。我找到了答案。
页面上的jquery版本是1.3.2,.prop
不可用的版本是导致此错误的原因。
如果您不想升级您的jquery版本,可以将.prop
替换为.attr
:
$form.find('button').prop('disabled', true);
变为:
$form.find('button').attr('disabled', true);
如果有帮助,请告诉我。