Я не уверен, делаю ли я лучший подход здесь, но у меня есть блок данных, который я хочу показать после того, как поиск сделан и не быть там вообще прежде. В первую очередь, нет ничего для показа, и второй модель, на которую это ссылается, является нолем, таким образом, это выдает исключение.
Я поместил этот блок в частичный шаблон и добавил его соответствующее пятно в моем расположении. Существует ли способ чисто представить частичное условно? Существует ли лучший способ приблизиться к этой проблеме?
Ruby позволяет делать такие приятные вещи, как это:
<%= render :partial => "foo/bar" if @conditions %>
Чтобы сделать это немного проще для чтения и понимания, его можно записать как
<%= render(:partial => "foo/bar") if @conditions %>
render
- это функция, и вы передаете ей хэш, который сообщает ей, какой партиал нужно визуализировать. Ruby позволяет помещать вещи в одну строку (что часто делает их более читаемыми и краткими, особенно в представлениях), поэтому раздел if @conditions
является обычным оператором if. Это также можно сделать так:
<% if @conditions %>
<%= render :partial => "foo/bar" %>
<% end %>
Изменить:
Ruby также позволяет использовать ключевое слово except
вместо if
. Это делает код еще более читаемым и избавляет вас от необходимости проводить отрицательные сравнения.
<%= render :partial => "foo/bar" if !@conditions %>
#becomes
<%= render :partial => "foo/bar" unless @conditions %>
Если я правильно слежу за вами, вы делаете это на уровне представления.
<% if !@my_search_data.nil? %>
<% render :partial => 'foo/bar' %>
<% end %>
Надеюсь, что это поможет. Если нет, возможно, опубликуйте пример своего кода.
Один из простых способов - использовать вспомогательный метод. Помощники, как правило, немного чище, чем помещают логику непосредственно в представление.
Итак, ваше представление может быть примерно таким:
<%= render_stuff_conditionally %>
и у вашего помощника будет метод для управления этим:
def render_stuff_conditionally
if @contional_check
render :partial => 'stuff'
end
end
где, очевидно, вещи названы более подходящим образом