Для начала, это мнение я пытаюсь повторить:Как использовать lookup_context, чтобы сделать это представление максимально сухим?
Это HTML от этого расположения (от части SAT в любом случае, вы можете экстраполировать остальное):
<table class="table table-hover table-bordered">
<thead>
<td colspan="2" class="text-center">
<strong>SAT</strong>
</td>
<tr>
<th>Subject</th>
<th>Grade</th>
</tr>
</thead>
<tbody>
<tr>
<td>Reading</td>
<td>900</td>
</tr>
<tr>
<td>Math</td>
<td>700</td>
</tr>
<tr>
<td>Writing</td>
<td>800</td>
</tr>
<tr>
<td><strong>Total</strong></td>
<td><strong>2,400</strong></td>
</tr>
</tbody>
Это то, что моя Grade.rb
модель выглядит следующим образом:
# == Schema Information
#
# Table name: grades
#
# id :integer not null, primary key
# subject :string
# result :string
# grade_type :integer
# profile_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class Grade < ActiveRecord::Base
belongs_to :profile
enum grade_type: { csec: 0, cape: 1, sat: 2, g7: 3, g8: 4, g9: 5, g10: 6, g11: 7, g12: 8, g13: 9 }
end
Это то, что, что таблица выглядит как в данный момент, то есть перед использованием метода lookup_context
в Rails:
<table class="table table-hover table-bordered">
<thead>
<td colspan="2" class="text-center">
<strong>SAT</strong>
</td>
<tr>
<th>Subject</th>
<th>Grade</th>
</tr>
</thead>
<tbody>
<% @sat_grades.each do |grade| %>
<tr>
<% if grade.subject.eql? "Total" %>
<td><strong><%= grade.subject %></strong></td>
<td><strong><%= grade.result %></strong></td>
<% else %>
<td><%= grade.subject %></td>
<td><%= grade.result %></td>
<% end %>
</tr>
<% end %>
</tbody>
@sat_grades
Где это: @sat_grades = @profile.grades.where(grade_type: :sat)
.
Я хочу использовать этот метод lookup_context, я думал так:
<% @grades.each do |grade| %>
<% if lookup_context.template_exists?(grade.grade_type, "grades/grade_types", true) %>
<%= render partial: "grade/grade_types/#{grade.grade_type}", locals: {event: event, index: index} %>
<% end %>
<% end %>
Проблема Я бегу в том, что каждый grade_type
имеет другую таблицу. Таким образом, grade_type: :sat
принадлежит к таблице «SAT», то же самое для «CSEC», «g11» и т. Д.
Я не могу придумать, как каждый из этих grade_types
, созданный специально в их таблице HTML, без много звонков lookup_context.template_exists?
.
Он почти побеждает цель сделать это так, если мне нужно позвонить lookup_context
для каждого grade_type
.
Каков наилучший способ приблизиться к этому, так что у меня есть только 1 lookup_context
звонок (если возможно), но он правильно отображает и обрабатывает все разные оценки правильно.