2014-12-01 41 views
1

我在狂歡的工作,而我試圖用毀損改變這種使用污損在施普雷商店改變不良代碼

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

..into這一點。

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

我已經提交pull請求有關冗餘if語句,如果@ order.has_step添加數據鉤到第二?(「交付」),但在此期間,我需要寫一個塗抹覆蓋,將頁面更改爲我需要它的外觀。我也許可以,如果@ 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 class =「columns alpha four」,所以我無法在第二個if語句中定位第一個div。我不想在頁面上留下空白的div,那我該怎麼辦?

回答

0

引用代碼中的兩個if語句不引用同一個變量。第一個if是指order,第二個是@order

當使用deface刪除erb的現有部分時,傳入的字符串必須與要移動的代碼完全匹配,以便覆蓋正確地找到它。由於第二個if語句使用@order,並且您的匹配器不包含@符號,所以它不會刪除該特定的if語句。

根據depec repo中的rspec測試,目前看來您目前不能在remove操作中使用多個匹配的字符串和一個覆蓋。相反,您必須使用第二個覆蓋來加強第二個if語句並將其刪除。

+0

完全錯過訂單@order的區別 - 感謝您指出! – Gogglor 2014-12-01 22:03:29

0

我發佈給Spree的請求使整個問題都沒有實際意義(如果您有興趣,可以在這裏找到:https://github.com/spree/spree/pull/5692)。另外,事實證明@order和order函數在文檔中的使用方式完全相同,並且對@order的所有引用都處於從Spree中刪除的過程中。