JQuery не запускается и не работает с моим проектом Rails 3.2 - PullRequest
0 голосов
/ 19 февраля 2012

Как и в заголовке, я убедился, что все необходимые файлы JS включены в метатеги, включая гем jquery-rails / coffee-rails, на всякий случай связанный с внешним.

Это модифицированный скрипт из учебника Райана Бейтса по 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)

Форма donations / 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 %>

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012

Похоже, ваш 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 .
0 голосов
/ 19 февраля 2012

Питер прав, ваш код coffeescript должен быть правильно назван, чтобы его можно было перевести на JavaScript.

Дополнительная стратегия отладки заключается в просмотре исходного кода html / js, отправляемого в ваш браузер.Используйте команду view source, чтобы увидеть HTML-источник.Затем нажмите на ссылку на ссылку js, содержащую переведенный файл donations.js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...