【问题标题】:JQuery doesn`t fire/work with my Rails 3.2 projectJQuery 不会触发/与我的 Rails 3.2 项目一起工作
【发布时间】:2012-03-09 19:35:10
【问题描述】:

如标题所示,我已确保所有需要的 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 %>

【问题讨论】:

    标签: javascript jquery ruby-on-rails forms coffeescript


    【解决方案1】:

    您的 javascript 似乎是,Coffeescript - 确保将其放入自己的 donations.js.coffee 文件中,并且在您使用该文件时包含 coffee-rails gem。

    标准调试技术在这里会很有用 - 尝试在初始 jQuery -&gt; 行之后添加 alert("It lives!") 或其他内容,以查看是否曾经调用过 document.ready 处理程序。

    如果没有,请检查以确保首先加载了 donations.js.coffee 文件,如果没有,请确保您将其加载到页面标题中,或者您在 @987654327 中有类似的内容@:

    //= require jquery
    //= require donations
    

    或者,如果您只想包含 app/assets/javascripts 中的所有内容:

    //= require jquery
    //= require_tree .
    

    【讨论】:

    【解决方案2】:

    Peter 是对的,您的咖啡脚本代码应该正确命名,以便可以将其转换为 JavaScript。

    另一个调试策略是查看发送到浏览器的 html/js 源代码。使用 view source 命令查看 html 源代码。然后点击对包含翻译后的donations.js的js链接的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多