2012-02-18 2 views
0

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

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

ответ

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 . 
+0

Спасибо за ответ Питер, у меня есть кофейные направляющие, включенные в gemfile. Когда я отправил сообщение, я забыл удалить предупреждение() перед обработкой: part. –

+0

Кроме того, вот источник, который я использую https://github.com/railscast/episode-288/blob/master/saas-after/app/assets/javascripts/subscriptions.js.coffee –

0

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

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

Смежные вопросы