Rails link_to如何在null

时间:2016-11-13 09:05:04

标签: ruby-on-rails

我认为这是:

 <td><%= link_to product_sale.product.consignor.try(:NAME), { controller: :consignors, action: :edit, ID: product_sale.product.consignor.try(:ID) }, :target => "_blank" %></td>

在product_sale视图中链接以编辑列出的产品的发货人。

有些产品没有发货人。发生这种情况时,会显示/consignors/edit

如何将其显示为空白?

1 个答案:

答案 0 :(得分:3)

当你说显示空白时,你的意思是不显示链接?如果是这样,你不能简单地只是有条件地调用link_to帮助器:

<td><%= product_sale.product.consignor ? (link_to edit_consignor_path(product_sale.product.consignor) ) : '' %></td>

只要您的路线设置正确,您就不需要指定controlleractionid

如果要向最终用户显示更有意义的内容而不是默认链接,请在编辑路径前添加一个额外的参数:

<td><%= product_sale.product.consignor ? (link_to product_sale.product.consignor.name, edit_consignor_path(product_sale.product.consignor) ) : '' %></td>

并考虑设置变量以便于阅读:

<td><% consignor = product_sale.product.consignor %>
<%= consignor ? (link_to consignor.name, edit_consignor_path(consignor) ) : '' %></td>

如果您在没有设置发货人时显示除空白以外的任何其他内容并不感兴趣,那么您可以使用ifc声明替换第三运算符,如2 called-chaos所示:

<td><% consignor = product_sale.product.consignor %>
<%= link_to consignor.name, edit_consignor_path(consignor) if consignor %></td>