使用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\"')")