Прежде всего, пустая ветвь if
в if / else обычно (но не всегда!) Пахнет плохо, так что не делайте этого, это только затрудняет чтение и понимание вашего кода.
Кроме того, вы дважды вычисляете Supplydetail.find_all_by_isbn_id(@isbn)
и Productavailability.find_by_code(...)
, чтобы получить <li>
вывод.Не делайте этого тоже.
И вы можете захотеть вставить большую часть этой логики в свой контроллер (или, возможно, помощника в зависимости от того, где и как часто он используется), чтобы уменьшить ERB-шум.
Может быть, что-то подобное поможет вам (и тому, кто будет поддерживать ваш код) лучше;сначала немного о контроллере:
@avail = nil
by_isbn = Supplydetail.find_all_by_isbn_id(@isbn).first
if by_isbn
@avail = Productavailability.find_by_code(by_isbn.productsupply_supplydetail_productavailability)
end
А затем в вашем ERB:
<% if @avail %>
<li><%= @avail.value %></li>
<% end %>
Если вы делаете много такого рода вещей, то вы можете добавить Productavailability.for_isbn
метод класса удобства в вашей модели.Тогда вашему контроллеру просто понадобится:
@avail = Productavailability.for_isbn(@isbn)
Но я не буду беспокоиться об этом, пока вы не начнете повторяться.
Я не знаком с formtastic, поэтому не могу вам помочьс этим.