2013-03-23 70 views
1

這裏的字符串是我的代碼:GSUB只有字符串具有價值

<a href="<%= foo_path(foo) %>" class="<%= foo.roles.empty? ? foo.roles.gsub(',', ' ') : "" %>"> 

undefined method `empty?' for nil:NilClass 

我只想輸出字符串的GSUB如果裏面有roles的東西,如果沒有,那麼就吐出一個空字符串。

有什麼建議嗎?

+1

即使你的'空'不會在零時間爆炸,你已經完成了三元邏輯的逆轉。 – dbenhur 2013-03-23 23:21:37

+0

在視圖中啊!邏輯!把它放在主持人或助手。 – 2013-03-23 23:23:55

+0

@AndrewMarshall:我會把幫手放在哪裏?你能寫一個小例子(因爲這是一個簡單的用例)作爲答案嗎? – sergserg 2013-03-23 23:25:53

回答

3

nil.to_s =>'',你的替代對一個空字符串沒有影響,這樣你就可以完全跳過empty?測試,像這樣:

<a href="<%= foo_path(foo) %>" class="<%= foo.roles.to_s.gsub(',', ' ') %>"> 
0

使用blank?method

<a href="<%= foo_path(foo) %>" class="<%= foo.roles.blank? ? "" : foo.roles.gsub(',', ' ') %>">