使用deface更改Spree存储区中的错误代码

使用deface更改Spree存储区中的错误代码,spree,deface,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(

我正在疯狂地工作,我正试图用诽谤来改变这一点

<% 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 %>
虽然说实话,文档在这一点上不是很好。无论如何,如何删除第二条if语句的全部内容?没有数据钩子来瞄准它,并且使用

:remove_content => "erb[silent]:contains('if order.has_step?(\"delivery\"')")

只删除第一条if语句的内容。我无法在第二个if语句中针对第一个div,因为在第一个if语句中已经有一个div class=columns alpha four。我不想在页面上留下一个空div,那么我能做什么呢?

引用代码中的两个if语句引用的变量不同。第一个if表示顺序,第二个if表示@order

当使用deface删除erb的现有部分时,传递到contains的字符串必须与要移动的代码完全匹配,以便覆盖正确定位它。由于第二个if语句使用@order,并且匹配器不包含@symbol,因此它不会删除该特定if语句


根据deface repo中的rspec测试,在remove操作中,当前似乎不能使用多个匹配字符串和一个覆盖。相反,您必须使用第二个重写来处理第二个if语句并将其删除。

我向Spree发布的pull请求使整个问题变得毫无意义,如果您感兴趣,可以在此处找到:。此外,事实证明,@order和order在该文档中的作用方式完全相同,而且所有对@order的引用都在从Spree中删除的过程中。

完全忽略了order@order的区别-感谢您指出!
:remove => "erb[silent]:contains('if order.has_step?(\"delivery\"')")
:remove_content => "erb[silent]:contains('if order.has_step?(\"delivery\"')")