Ruby on Rails: условно отобразите частичное

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

Я поместил этот блок в частичный шаблон и добавил его соответствующее пятно в моем расположении. Существует ли способ чисто представить частичное условно? Существует ли лучший способ приблизиться к этой проблеме?

38
задан Donald Hughes 4 March 2010 в 02:20
поделиться

3 ответа

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 %>
49
ответ дан 27 November 2019 в 03:43
поделиться

Если я правильно слежу за вами, вы делаете это на уровне представления.

<% if !@my_search_data.nil? %>
<% render :partial => 'foo/bar' %>
<% end %>

Надеюсь, что это поможет. Если нет, возможно, опубликуйте пример своего кода.

2
ответ дан 27 November 2019 в 03:43
поделиться

Один из простых способов - использовать вспомогательный метод. Помощники, как правило, немного чище, чем помещают логику непосредственно в представление.

Итак, ваше представление может быть примерно таким:

<%= render_stuff_conditionally %>

и у вашего помощника будет метод для управления этим:

def render_stuff_conditionally
  if @contional_check
    render :partial => 'stuff'
  end
end

где, очевидно, вещи названы более подходящим образом

9
ответ дан 27 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: