2016-11-13 25 views
1

我有這個在我看來:的Rails的link_to怎麼是空白的空

<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

如何將其顯示爲空白?

回答

2

當你說空白,而不是你的意思是不顯示鏈接?如果是這樣,你不能只是簡單地有條件調用的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> 

如果您在沒有設置寄售商的情況下顯示空白以外的內容時不感興趣,那麼您可以使用if語句替換第三位操作員,如2called-chaos所示:

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

<%= link_to(...)如果product_sale.product.consignor%>'? –

+0

@ 2called-chaos這也可以......只有像我這樣做過的使用三級操作符的好處是,你可以顯示除空白字符串以外的東西 - 例如:'Consigner not assigned' – David

+0

感謝您的回答。但是,當產品沒有發貨人時,您的解決方案顯示爲空白,這是正確的,但對於顯示貨主鏈接的產品已成爲/發貨人/ 438ae0ab-00ca-4d10-a0e1-8fd4af8d1171 /編輯。那是因爲我的路線設置發生了嗎? – Catmal