Переопределить просмотры Spree Admin с Deface
Я пытаюсь добавить несколько строк в админ Spree.
Файл, который я хотел бы переопределить:
backend/app/views/spree/admin/orders/_shipment.html.erb
Я хочу добавить это здесь:
<tr class="show-tracking total">
<td colspan="5" class="tracking-value">
<% if shipment.tracking.present? %>
<strong><%= Spree.t(:tracking) %>:</strong> <%= shipment.tracking %>
<% else %>
<%= Spree.t(:no_tracking_present) %>
<% end %>
</td>
</tr>
Мое переопределение:
<!-- insert_after '.tracking-value' -->
</br>
<strong><%= Spree.t(:is_delivered) %>: </strong><%= shipment.is_delivered %></br>
<% if shipment.date_delivered? %>
<strong><%= Spree.t(:date_delivered) %>: </strong><%= shipment.date_delivered %></br>
<% end %>
находится в app/overrides/spree/admin/orders/shipment/add_tracking_info.html.erb.deface
Содержание:
</br>
<strong><%= Spree.t(:is_delivered) %>: </strong><%= shipment.is_delivered %></br>
<% if shipment.date_delivered? %>
<strong><%= Spree.t(:date_delivered) %>: </strong><%= shipment.date_delivered %></br>
<% end %>
Я хотел бы сделать:
<tr class="show-tracking total">
<td colspan="5" class="tracking-value">
<% if shipment.tracking.present? %>
<strong><%= Spree.t(:tracking) %>:</strong> <%= shipment.tracking %>
</br>
<strong><%= Spree.t(:is_delivered) %>: </strong><%= shipment.is_delivered %</br>
<% if shipment.date_delivered? %>
<strong><%= Spree.t(:date_delivered) %>: </strong><%= shipment.date_delivered %></br>
<% end %>
<% else %>
<%= Spree.t(:no_tracking_present) %>
<% end %>
</td>
</tr>
любая помощь по этому вопросу будет принята с благодарностью, большое спасибо!
1 ответ
Вы пропускаете шаг. Очень абстрактно вы должны указать веселье где и что вам нужно вставить.
Deface::Override.new(
virtual_path: 'spree/admin/shared/_order_summary',
name: 'admin_order_custom_details',
insert_after: 'header#order_tab_summary > dl.additional-info',
partial: 'spree/admin/shared/admin_order_custom_details'
)
Следующее, что скопировано из проекта, я работал до вчерашнего дня. Что это значит? Deface
добавить частичный 'spree / admin / shared / admin_order_custom_detailsjust after the dom element identified by
header # order_tab_summary> dl.additional-info`.
Так как я вижу, что вам нужно сделать, это
- менять
html.erb.deface
чтобы простоhtml.erb
и переместить его туда, где он будет похожapp/views/spree/admin/orders/add_order_detials_to_shipment.html.erb
- создать новый файл в
app/overides/
(предупреждение о спойлере, сделайте это осмысленным предупреждением или пожалеете позже) - Найти идентификатор (просто глядя на него, я думаю, что это что-то вроде
erb[silent]:contains('if shipment.tracking.present?')
- использование
insert_bottom
вместоinsert_after
Я не управлял этим, но я верю, что это то, что вы ищете.
Deface::Override.new(
virtual_path: 'app/views/spree/admin/orders/_shipment',
name: 'add_order_detials_to_shipment', # Or a fancy unique name
insert_bottom: "erb[silent]:contains('if shipment.tracking.present?')",
partial: 'app/views/spree/admin/orders/add_order_detials_to_shipment'
)
PS
После прочтения этого раздела документа, о котором я не знал, что существует DSL для Deface, я думаю, вам нужно обновить DSL так, чтобы
<!-- insert_bottom "erb[silent]:contains('if shipment.tracking.present?')" -->
</br>
<strong><%= Spree.t(:is_delivered) %>: </strong><%= shipment.is_delivered %></br>
<% if shipment.date_delivered? %>
<strong><%= Spree.t(:date_delivered) %>: </strong><%= shipment.date_delivered %></br>
<% end %>