关于Rails上的Ruby:无法将.erb转换为.haml

Cannot convert .erb to .haml

我有这段代码可为捐赠过程创建一个视图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<h2 class="mbs">New Donation

<%= 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 %>


<p>Please enter your donation details (this is a donation and will not be applied towards your account):</p>


<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">


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

我已经尝试过将其转换为.haml,但无法正常工作(我认为这是由于缩进不当造成的):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
%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

的新手


需要缩进:javascript声明之后的JavaScript代码,否则HAML不会将其放在其生成的标记内。请参阅过滤器文档。

1
2
3
4
5
6
7
:javascript
  var clientToken =" @client_token";
  braintree.setup(clientToken,"dropin", {
    container:"payment-form",
    form:"checkout-form",
    coinbase: { container:"coinbase-container-id" }
  });

您的ERB来源中似乎也有一个额外的<% end %>,但是HAML忽略了它。