link_to_if如果为false,为什么会显示链接标题?

时间:2010-10-18 17:28:19

标签: ruby-on-rails ruby-on-rails-3

如果条件为false,为什么link_to_if会显示链接标题?

我在DELETE上使用它,如果条件为false,Rails会显示删除但它没有链接。如果它是假的,我不希望DELETE出现。

是否有设置或其他帮助?

谢谢

3 个答案:

答案 0 :(得分:9)

如果你只想让链接完全消失,只需在link_to周围使用'if',而不是link_to_if。

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

如果您希望在条件不为真时显示 else ,则可以将块传递给渲染。话虽如此,从风格的角度来看,我认为我更喜欢“if''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的文档。

答案 1 :(得分:6)

您可以利用该块而不是使用if / else结构:

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

在这种情况下,由于该块为空,如果条件为 false ,它将不会显示任何内容。

答案 2 :(得分:0)

更多信息-

link_to_if的完整语法是-

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

如果您查看源代码,则会发现如果条件为false,它将尝试执行给定的块;如果未给出块,则将仅返回name。 / p>

避免显示名称的技巧是只指定一个空块,如@JoaoDaniel-

所述
<%= link_to_if(message.user, 'Poster', message.user, class: 'htmlClass') {} %>