2015-09-21 2 views
0

Я этот код, который создает представление для процесса донорства:Невозможно преобразовать .erb в .haml

<h2 class="mbs">New Donation</h2> 
<br> 
<%= form_tag confirm_payment_path, id: "checkout-form" do %> 
    <% if current_user and !current_user.has_payment_info? %> 
    <%= render 'customer_form' unless @anonymous_user %> 
<% end %> 

<br> 
<p>Please enter your donation details (this is a donation and will not be applied towards your account):</p> 
<div id="payment-form"></div> 
<div id='coinbase-container-id'></div> 
<input type="text" name="amount" placeholder="Enter amount"> 
<input type="submit" class="btn btn-primary" value="Donate"> 
<% end %> 

<script src="https://js.braintreegateway.com/v2/braintree.js"></script> 
<script> 

var clientToken = "<%= @client_token %>"; 
braintree.setup(clientToken, "dropin", { 
container: "payment-form", 
form: "checkout-form", 
coinbase: { container: "coinbase-container-id" } 
} 
); 
</script> 

Я попытался это, чтобы преобразовать его в .haml, но не работает (я думаю, что это вызванные неправильным отступом):

%h2.mbs New Donation 
%br 
= form_tag confirm_payment_path, id: "checkout-form" do 
    - if current_user and !current_user.has_payment_info? 
    = render 'customer_form' unless @anonymous_user 
%br 
%p Please enter your donation details (this is a donation and will not be applied towards your account): 
#payment-form 
#coinbase-container-id 
%input{:name => "amount", :placeholder => "Enter amount", :type => "text"} 
%input.btn.btn-primary{:type => "submit", :value => "Donate"} 
%script{:src => "https://js.braintreegateway.com/v2/braintree.js"} 
:javascript 
var clientToken = " @client_token "; 
braintree.setup(clientToken, "dropin", { 
    container: "payment-form", 
    form: "checkout-form", 
    coinbase: { container: "coinbase-container-id" } 
} 
); 

Почему это неправильно? Я действительно новичок в .haml

ответ

1

Код JavaScript, который у вас есть после объявления :javascript, должен быть отступом или HAML не будет помещать его в теги <script>, которые он генерирует. См. Filters documentation.

:javascript 
    var clientToken = " @client_token "; 
    braintree.setup(clientToken, "dropin", { 
    container: "payment-form", 
    form: "checkout-form", 
    coinbase: { container: "coinbase-container-id" } 
    }); 

Вы также, как представляется, в вашем источнике ERB дополнительный <% end %>, но HAML игнорирует его.

+0

Спасибо! Сейчас принято, но не делает то, что должно делать. Javascript использует идентификатор «платежная форма», но он не передан. Я изменил «#» на «.» .. но не повезло: http://pastie.org/10434858 – ClauCece

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