link_to_if Почему он показывает заголовок ссылки, если false? - PullRequest
2 голосов
/ 18 октября 2010

Почему link_to_if показывает заголовок ссылки, если условие ложно?

Я использую его в DELETE, и если условие ложно, Rails показывает удаление, но оно не связано.Я не хочу, чтобы DELETE появлялся, если он ложный.

Есть ли настройка или другой помощник для этого?

Спасибо

Ответы [ 3 ]

9 голосов
/ 18 октября 2010

Если вы просто хотите, чтобы ссылка полностью исчезла, просто используйте 'if' вокруг link_to, а не link_to_if.

<% if condition %>
  <%= link_to ... %>
<% end %>

Если вы хотите, чтобы когда-нибудь появлялось else условие неверно, вместо этого вы можете передать блок для рендеринга.Сказав это, со стилистической точки зрения, я думаю, что я предпочитаю «если», «иначе» синтаксису блока - это менее запутанно, по крайней мере на мой взгляд.

Синтаксис блока:

<%= link_to_if(condition, "Link Title", dest ) { link_to( "Alt Title", alt_dest ) } %>

Синтаксис if / else:

<% if condition %>
  <%= link_to "Link Title", dest %>
<% else %>
  <%= link_to "Alt Title", alt_dest %>
<% end >

Для получения дополнительной информации см. Документацию по UrlHelper .

6 голосов
/ 06 сентября 2014

Вы можете воспользоваться преимуществом блока и просто использовать вместо структуры if / else:

<%= link_to_if(message.user, 'Poster', message.user){} %>

В этом случае, поскольку блок пуст, он ничего не показывает, если условие false .

0 голосов
/ 19 июля 2018

Для получения дополнительной информации -

Полный синтаксис link_to_if is-

link_to_if(condition, name, options = {}, html_options = {}, &block)

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

. Хитрость, позволяющая избежать отображения имени, состоит в том, чтобы просто указать пустой блок, как объясняется @ JoaoDaniel

<%= link_to_if(message.user, 'Poster', message.user, class: 'htmlClass') {} %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...