Шаблон Spree - искажать условный код
Я пытаюсь изменить этот файл представления: https://github.com/spree/spree/blob/master/frontend/app/views/spree/checkout/edit.html.erb
Все, что я хочу сделать, это изменить класс с двенадцати до десяти в этой строке:
<div class="columns <%= if @order.state != 'confirm' then 'alpha twelve' else 'alpha omega sixteen' end %>" data-hook="checkout_form_wrapper">
Каков будет лучший способ сделать это? Единственное решение, которое я могу придумать, - это использовать следующий сценарий deface, но это не выглядит красивым способом:
<!-- replace '[data-hook="checkout_content"]' -->
<div class="row" data-hook="checkout_content">
<div class="columns <%= if @order.state != 'confirm' then 'alpha ten' else 'alpha omega sixteen' end %>" data-hook="checkout_form_wrapper">
<%= form_for @order, :url => update_checkout_path(@order.state), :html => { :id => "checkout_form_#{@order.state}" } do |form| %>
<% unless @order.email? %>
<p class="field" style='clear: both'>
<%= form.label :email %><br />
<%= form.text_field :email %>
</p>
<% end %>
<%= render @order.state, :form => form %>
<% end %>
</div>
<% if @order.state != 'confirm' %>
<div id="checkout-summary" data-hook="checkout_summary_box" class="columns omega six">
<%= render :partial => 'summary', :locals => { :order => @order } %>
</div>
<% end %>
Есть ли другой способ достичь моей цели? Спасибо за ответ!
1 ответ
Вы можете попробовать использовать свойство set attribute из deface, чтобы изменить свойство класса для этого div.
Из порчи документов:
: set_attributes - Устанавливает атрибуты для всех элементов, которые соответствуют предоставленному селектору, заменяя существующее значение атрибута, если оно присутствует, или добавляя, если нет. Ожидается: опция атрибутов для передачи
Также для немного другого решения вы можете попробовать CSS селектор, чтобы установить ширину:
div.twelve[data-hook="checkout_form_wrapper"] {
width: something_less_than_what_you_had_before
}