Я работаю в 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 и добавил обработчик данных ко второму оператору if @order.has_step?("delivery"), но тем временем мне нужно написать переопределение дефейса, которое изменит страницу как мне нужно, чтобы это выглядело. Возможно, я смогу удалить первое выражение if @order.has_step?("delivery"), так как я думаю, что Deface нацелится на первый экземпляр того, о чем я говорю на странице, если я напишу
:remove => "erb[silent]:contains('if order.has_step?(\"delivery\"')")
хотя, честно говоря, документация не очень хороша в этом отношении. В любом случае, как я могу полностью удалить второй оператор if? Для этого нет хука данных, и использование
:remove_content => "erb[silent]:contains('if order.has_step?(\"delivery\"')")
просто удаляет содержимое первого оператора if. Я не могу настроить таргетинг на первый div во втором операторе if, так как в первом операторе if уже есть div class="columns alpha four". Я не хочу оставлять пустой div на странице, что мне делать?