我在Spree工作,我正在尝试使用Deface来改变这个
<% if order.has_step?("delivery") %>
<div class="columns alpha four" data-hook="order-ship-address">
<h6><%= Spree.t(:shipping_address) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:address) unless @order.completed? %></h6>
<%= render :partial => 'spree/shared/address', :locals => { :address => order.ship_address } %>
</div>
<% end %>
<% if @order.has_step?("delivery") %>
<div class="columns alpha four">
<h6><%= Spree.t(:shipments) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:delivery) unless @order.completed? %></h6>
<div class="delivery">
<% order.shipments.each do |shipment| %>
<div>
<i class='fa fa-truck'></i>
<%= Spree.t(:shipment_details, :stock_location => shipment.stock_location.name, :shipping_method => shipment.selected_shipping_rate.name) %>
</div>
<% end %>
</div>
<%= render(:partial => 'spree/shared/shipment_tracking', :locals => {:order => @order}) if @order.shipped? %>
</div>
<% end %>
..进入这个。
<div class="columns alpha four" data-hook="order-ship-address">
<h6><%= Spree.t(:shipping_address) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:address) unless @order.completed? %></h6>
<%= render :partial => 'spree/shared/address', :locals => { :address => order.ship_address } %>
</div>
我已经提交了关于冗余if语句的pull请求,并在第二个if @ order.has_step中添加了数据挂钩?(&#34; delivery&#34;),但在此期间我需要编写一个deface覆盖,将页面更改为我需要它的外观。我可以删除第一个if @ order.has_step?(&#34; delivery&#34;)因为我认为 Deface将针对我所谈论的第一个实例我写的页面
:remove => "erb[silent]:contains('if order.has_step?(\"delivery\"')")
虽然说实话,文档在这一点上并不是很好。无论如何,如何删除第二个if语句的全部内容?没有数据挂钩来定位它,并使用
:remove_content => "erb[silent]:contains('if order.has_step?(\"delivery\"')")
只删除第一个if语句的内容。我无法在第二个if语句中定位第一个div,因为已经有一个div class =&#34;列alpha 4&#34;在第一个if语句中。我不想在页面上留下空白的div,所以我该怎么办?
答案 0 :(得分:0)
引用代码中的两个if语句不引用同一个变量。第一个if
引用order
,第二个引用@order
。
使用deface删除erb的现有部分时,传入contains的字符串必须与要移动的代码完全匹配才能使覆盖正确定位它。由于第二个if
语句使用@order
,并且您的匹配器不包含@符号,因此它不会删除该特定if语句。
根据deface repo中的rspec测试,您似乎无法在remove
操作中使用多个匹配字符串和一个覆盖。相反,您必须使用第二个覆盖来处理第二个if语句并将其删除。
答案 1 :(得分:0)
我发布给Spree的拉取请求使整个问题没有实际意义(如果你感兴趣,可以在这里找到https://github.com/spree/spree/pull/5692)。此外,事实证明,@ order和order函数在该文档中的方式完全相同,并且所有对@order的引用都在从Spree中删除。