2012-09-12 2 views
0

У меня есть модель с аттрибутами имя, название, описание ect. Если имя является, например, погода-foracast Я хочу, чтобы показать дополнительный HTML элементЛучший подход - Условия на вид

= high_chart("my_id", @chart) 

в шаблоне шоу, которым генерирует хороший график. Когда страница не является погодой, я не хочу показывать диаграмму.

Каков наилучший подход? Условия в представлении?

+0

вы читали о макетах, обертоны, помощникам? –

ответ

1

Ваша проблема выглядит очень близко к шаблону экспоната, представленному в Object on Rails.

Проще говоря, предлагаемое решение состоит в том, чтобы обернуть вашу модель в декораторе (или нескольких декораторах), выбранном с использованием состояния вашей модели (в вашем случае имя записи).

Я не могу это объяснить, а как это объясняется в book но что шаблон является настолько полезным, что AVDI Гримм сделал камень из него: https://github.com/objects-on-rails/display-case

+0

вот оно! я буду читать его ... спасибо! – Remco

1

Так это выглядит, как вы HAML, вы можете просто использовать if модификатор следующим образом:

= high_chart("my_id", @chart) if [model.name] == "weather-forecast" 

где [model.name] заменяется соответствующим кодом.

+0

@Remco, надеюсь, вы не получите слишком много таких 'if' в своих взглядах через некоторое время –

+0

Если вам нужно много 'if', то вы делаете это неправильно и должны рассмотреть рефакторинг. Тем не менее, случайный оператор 'if' в представлении совершенно прекрасен, пока условное выражение используется для определения того, как должна отображаться информация. Даже примеры, представленные в Rails Guides, содержат условные обозначения. –

1

Я знаю, что этот ответ полностью перевернут, но что-то, что нужно учитывать, - это перемещение вашей условной логики за пределы ваших взглядов.
Может идти с рисунком View Presenter, увидеть это: About presenter pattern in rails. is a better way to do it?

Ведущие рубин объекты и могут быть проверены на самом деле легко.
Принимая во внимание тонны логики внутри представления, действительно трудно проверить.
Кроме того, вы хотите изолировать логику, проверяя, что model.name внутри вашей страницы просмотра не является лучшим способом MVC.

Смежные вопросы