Активная форма администратора: has_many вводит в отдельные панели по условию - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь использовать active admin и formtastic для создания формы, в которой обзоры определенного типа редактируются на отдельной панели, в настоящее время я отображаю панели с помощью частичного .html.erb, например:

<div class="panel">
  <h3>Admin Reviews</h3>
  <div class="panel_contents">
    <div>
      <% f.has_many :reviews, heading: false, new_record: true, allow_destroy: false do |review| %>
        <% next unless review.object.reviewer_type === "Admin" %>
        <%= render partial: "admin/admin_reviews", locals: { r: review } %>
        <% review.input :_destroy, :as => :boolean, :label => "Delete" %>
      <% end %>
    </div>
  </div>
</div>

<div class="panel">
  <h3>Reviews</h3>
  <div class="panel_contents">
  <div>
    <% f.has_many :reviews, heading: false, new_record: true, allow_destroy: false do |review| %>
       <% next if review.object.reviewer_type === "Admin" %>
       <%= render partial: "admin/form_reviews", locals: { r: review } %>
       <% review.input :_destroy, :as => :boolean, :label => "Delete" %>
    <% end %>
  </div>
</div>

но я бы предпочел избавиться от пустого элемента div, который создается для каждого повторяемого обзора и принадлежащего другой панели ( blank div ):

<div class="panel">
  <h3>Admin Reviews</h3>
  <div class="panel_contents">
    <div>
      <% admin_reviews = Review.where(reviewer_type: "Admin") %>
      <% f.has_many admin_reviews, heading: false, new_record: true, allow_destroy: true do |review| %>
        <%= render partial: "admin/admin_reviews", locals: { r: review } %>
      <% end %>
    </div>
  </div>
</div>

<div class="panel">
  <h3>Reviews</h3>
  <div class="panel_contents">
  <div>
    <% reviews = Review.where.not(reviewer_type: "Admin") %>
    <% f.has_many reviews, heading: false, new_record: true, allow_destroy: true do |review| %>
       <%= render partial: "admin/form_reviews", locals: { r: review } %>
    <% end %>
  </div>
</div>

Выше не работает, но я надеюсь, что это говорит о моей потребности в более точном решении, которое не имеет пустых div, которые я рассматриваю как скрытие с javascript.

1 Ответ

0 голосов
/ 27 июня 2018
<div class="panel">
  <h3>Reviews</h3>
    <div class="panel_contents">
      <div>
        <% f.has_many :reviews, for: [:reviews, f.object.non_admin_reviews], heading: false, new_record: true, allow_destroy: true do |review| %>
          <%= render partial: "admin/tutors/form_tutor_reviews", locals: { r: review } %>
        <% end %>
     </div>
   </div>
</div>
...