2013-03-23 97 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(',', ' ') %>">