在标题中,我确保所有需要的JS文件都包含在元标记中,包括jquery-rails / coffee-rails gem,链接到外部标记以防万一。
这是一篇来自Ryan Bates Stripe教程的修改过的脚本,据我所知它通过从表单中检测提交动作来启动它。
由于我不熟悉JS或CoffeeScript,我无法确定这里的问题是什么。
感谢我能得到的任何帮助。
donations.js文件:
jQuery ->
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))
donation.setupForm()
donation =
setupForm: ->
$('#new_donation').submit ->
$('input[type=submit]').attr('disabled', true)
if $('#card_number').length
donation.processCard()
false
else
true
processCard: ->
card =
number: $('#card_number').val()
cvc: $('#card_code').val()
expMonth: $('#card_month').val()
expYear: $('#card_year').val()
Stripe.createToken(card, donation.handleStripeResponse)
handleStripeResponse: (status, response) ->
if status == 200
alert(response.id)
else
alert(response.error.message)
捐款/ new.html.erb表格
<%= form_for(@donation) do |f| %>
<div class="field">
<%= f.label :from %>
<%= f.text_field :from %>
</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 (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="field">
<%= f.label :Notes %>
<%= f.text_field :note %>
</div>
<br>
<center>
<span class="BigBold">Amount: $2.50</span>
<%= f.hidden_field :amount, {:value => "2,5" } %><br>
</center>
<br>
<center>
<%= f.submit "Donate Now", :class => 'donate-button' %>
</center>
<% end %>
答案 0 :(得分:2)
你的javascript似乎是, Coffeescript - 确保它放在自己的donations.js.coffee
文件中,并且你包含了coffee-rails
宝石重新开始。
标准调试技术在这里很有用 - 尝试在初始alert("It lives!")
行之后添加jQuery ->
或其他内容,以查看是否正在调用document.ready处理程序。
如果没有,请检查以确保首先加载donations.js.coffee
文件,如果没有,请确保您要么将其加载到页面的标题中,或者您有类似的内容application.js
:
//= require jquery
//= require donations
或者,如果您只想在app/assets/javascripts
中包含所有内容:
//= require jquery
//= require_tree .
答案 1 :(得分:0)
彼得是对的,你的coffeescript代码应该被正确命名,以便它可以被翻译成JavaScript。
另一个调试策略是查看发送到浏览器的html / js源。使用view source命令查看html源代码。然后单击对包含已翻译的捐赠的js链接的引用。