基于link_to的rails4行为为零

时间:2016-06-08 13:54:34

标签: ruby-on-rails ruby

website表上有product_lead个attr是可选的。如果它存在,那么我想将@produc_lead.lead转换为链接,但如果不是,则应该是纯文本。

如果我使用下面的代码且网站为零,则链接指向用户当前所在的页面。如果我使用@product_lead.try(:website)执行此操作,它将是相同的。但正如我所提到的,在这种情况下,我希望在链接上有纯文本。

<%= link_to @product_lead.website, target: "_blank" do %>
  <%= @product_lead.lead %>
<% end %>

在玩完之后我又回到了下面的解决方案,但它很可怕。有更好的想法吗?

<% if @product_lead.website %>
  <%= link_to @product_lead.website, target: "_blank" do %>
    <%= @product_lead.lead %>
  <% end %>
<% else %>
  <%= @product_lead.lead %>
<% end %>

3 个答案:

答案 0 :(得分:2)

您可以为此创建自定义视图助手。

答案 1 :(得分:2)

好吧,无论您是否提供有效的网址,link_to都会生成<a>代码。因此,如果URL为零,是的,它将是您自己的页面的链接。

如果你想“隐藏”这个,你可以调用一个局部,你可以在其中放置if / else等等,但这只是在地毯下扫一遍:)

或者,如果你想进一步,作为@JovicaŠuša,视图助手是最优雅的解决方案。

答案 2 :(得分:2)

如果Rails 4

,也许link_to_if
<%= link_to_if(@product_lead.website, @product_lead.lead, @product_lead.website) do %>
     @product_lead.lead
<%= end %>