2014-12-01 2 views
1

이어지고 저장소에 나쁜 코드를 변경 훼손, 나는이 ..into이사용 나는 흥겹게하고 있어요

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

는 이미 ("배달")? 문 경우와 @ order.has_step 경우 두 번째로 데이터 후크를 추가 중복에 대해 풀 요청을 제출했지만, 그 동안 나는를 작성해야 deface override는 페이지를 어떻게 보일 필요가 있는지로 바꿀 것입니다. 나는 @ order.has_step 경우 먼저 제거 할 수 있는가? ("배달") 나는 생각 이후가

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

를 작성하는 경우 훼손 내가 페이지에 무슨 말인지의 첫 번째 인스턴스를 대상으로합니다 솔직히 그 문서는 그 시점에서별로 좋지 않습니다. 어쨌든, 어떻게 두 번째 if 문 전체를 제거 할 수 있습니까? 타겟팅 할 데이터 훅이없고

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

은 첫 번째 if 문의 내용을 삭제하기 만하면됩니다. 두 번째 if 문에서 첫 번째 div를 타겟팅 할 수 없습니다. 첫 번째 if 문에 이미 div class = "columns alpha 4"가 있으므로. 페이지에서 빈 div를 남기고 싶지 않으므로 어떻게해야합니까?

답변

0

참조 된 코드의 두 if 문은 동일한 변수를 참조하지 않습니다. 첫 번째 iforder을, 두 번째는 @order을 나타냅니다.

deface를 사용하여 erb의 기존 섹션을 제거하는 경우, 포함에 전달 된 문자열은 재정의가 제대로 찾으려면 이동하려는 코드와 정확하게 일치해야합니다. 두 번째 if 문은 @order을 사용하고 일치자는 @ 기호를 포함하지 않으므로 특정 if 문을 제거하지 않습니다.

deface repo에서 rspec 테스트를 기반으로 현재 remove 작업에서 하나의 무시와 함께 여러 개의 일치하는 문자열을 사용할 수있는 것으로 보이지 않습니다. 대신 두 번째 if 문을 제거하고 제거하기 위해 두 번째 재정의를 사용해야합니다.

+0

완전히 주문을 놓쳤습니다. @ 주문상의 차이점 - 지적 해 주셔서 감사합니다! – Gogglor

0

내가 Spree에 게시 한 풀 요청은이 모든 문제를 논란의 여지가있게 만들었습니다. 관심이 있으시면 여기에서 찾으실 수 있습니다 : https://github.com/spree/spree/pull/5692). 또한, @order 및 order 함수는 문서에서와 똑같은 방식으로 작동하며, @order에 대한 모든 참조는 Spree에서 제거되는 과정에 있습니다.